[{"data":1,"prerenderedAt":795},["ShallowReactive",2],{"post-\u002Ftr\u002Fphp-generator-ve-iterator-farki":3},{"page":4,"translation":641,"nav":643,"related":772,"random":784},{"id":5,"title":6,"body":7,"categories":623,"category":625,"date":626,"description":627,"draft":628,"extension":629,"image":630,"kind":625,"lang":445,"meta":631,"navigation":158,"path":632,"readingTime":149,"seo":633,"slug":634,"stem":635,"tags":636,"translationKey":639,"type":624,"updated":625,"__hash__":640},"postsTr\u002Ftr\u002Fphp-generator-ve-iterator-farki.md","PHP'de Generator ve Iterator Arasındaki Temel Farklar",{"type":8,"value":9,"toc":612},"minimark",[10,14,61,70,97,100,105,108,113,118,333,337,343,396,403,405,409,416,434,438,534,536,540,568,570,574,595,598,603,608],[11,12,13],"p",{},"PHP'de Generator'lar (Üreteçler) ve Iterator'lar (Yineleyiciler), özel yineleme mekanizmaları oluşturmak için kullanılan güçlü araçlardır. Ancak, bu iki yapı arasında hem implementasyon hem de çalışma mantığı açısından önemli farklar bulunur.",[15,16,17,24],"blockquote",{},[11,18,19,20],{},"💡 ",[21,22,23],"strong",{},"Özet (TL;DR):",[25,26,27,39,48],"ul",{},[28,29,30,33,34,38],"li",{},[21,31,32],{},"Generators (Üreteçler):"," ",[35,36,37],"code",{},"yield"," anahtar kelimesini kullanan, durumu (state) otomatik olarak saklayan hafif fonksiyonlardır. Büyük veri kümeleri için son derece bellek dostudur.",[28,40,41,33,44,47],{},[21,42,43],{},"Iterators (Yineleyiciler):",[35,45,46],{},"Iterator"," arayüzünü (interface) uygulayan ve 5 adet zorunlu lifecycle metodunu barındıran sınıflardır. Geriye sarılabilirler (rewindable) ve tam kontrol sağlarlar ancak daha fazla kod yazımı gerektirirler.",[28,49,50,53,54,57,58,60],{},[21,51,52],{},"Temel Seçim Kriteri:"," Basit ve bellek tasarruflu veri akışları için (örn. devasa CSV okumak) ",[21,55,56],{},"Generator"," kullanın. Özel nesne durum yönetimi veya döngüyü başa sarabilme (rewind) ihtiyacınız varsa ",[21,59,46],{}," sınıfı tercih edin.",[11,62,63,64,66,67,69],{},"Öncelikle bu kavramların ne anlama geldiğini tanımlayalım. Bir ",[21,65,56],{},", geliştiricinin belirli bir değer kümesi üzerinde yineleme yapmak için kullanabileceği hafif bir yineleyici oluşturmasını sağlayan özel bir fonksiyondur. Generator'lar, fonksiyonun yürütülmesini geçici olarak duraklatmasına ve çağırıcıya bir değer dönmesine olanak tanıyan ",[35,68,37],{}," anahtar kelimesi kullanılarak oluşturulur. Fonksiyon daha sonra kaldığı yerden devam edebilir.",[11,71,72,73,75,76,78,79,82,83,82,86,82,89,92,93,96],{},"Diğer taraftan bir ",[21,74,46],{},", PHP'deki yerleşik ",[35,77,46],{}," arayüzünü (interface) uygulayan bir nesnedir (object). Bu arayüz, bir sınıfın yineleyici olarak kabul edilmesi için mutlaka uygulanması gereken metotları tanımlar. Bu metotlar; ",[35,80,81],{},"rewind",", ",[35,84,85],{},"current",[35,87,88],{},"key",[35,90,91],{},"next"," ve ",[35,94,95],{},"valid"," şeklindedir ve geliştiriciye yineleme süreci üzerinde tam kontrol sunar.",[98,99],"hr",{},[101,102,104],"h2",{"id":103},"kod-örnekleri-ile-karşılaştırma","Kod Örnekleri ile Karşılaştırma",[11,106,107],{},"Farkı daha iyi anlamak için, 1'den 1.000.000'a kadar olan sayıları üreten bir yapıyı her iki yöntemle de kuralım.",[109,110,112],"h3",{"id":111},"_1-özel-bir-iterator-sınıfı-kullanmak","1. Özel Bir Iterator Sınıfı Kullanmak",[11,114,115,117],{},[35,116,46],{}," arayüzünü uygulamak için bir sınıf oluşturmamız ve 5 adet metodu tanımlamamız gerekir:",[119,120,125],"pre",{"className":121,"code":122,"language":123,"meta":124,"style":124},"language-php shiki shiki-themes github-light github-dark","class RangeIterator implements Iterator {\n    private int $start;\n    private int $end;\n    private int $current;\n\n    public function __construct(int $start, int $end) {\n        $this->start = $start;\n        $this->end = $end;\n    }\n\n    public function rewind(): void {\n        $this->current = $this->start;\n    }\n\n    public function current(): mixed {\n        return $this->current;\n    }\n\n    public function key(): mixed {\n        return $this->current;\n    }\n\n    public function next(): void {\n        $this->current++;\n    }\n\n    public function valid(): bool {\n        return $this->current \u003C= $this->end;\n    }\n}\n\n\u002F\u002F Kullanım\n$range = new RangeIterator(1, 1000000);\nforeach ($range as $number) {\n    \u002F\u002F Sayıyı işle\n}\n","php","",[35,126,127,135,141,147,153,160,166,172,178,184,189,195,201,206,211,217,223,228,233,239,244,249,254,260,266,271,276,282,288,293,299,304,310,316,322,328],{"__ignoreMap":124},[128,129,132],"span",{"class":130,"line":131},"line",1,[128,133,134],{},"class RangeIterator implements Iterator {\n",[128,136,138],{"class":130,"line":137},2,[128,139,140],{},"    private int $start;\n",[128,142,144],{"class":130,"line":143},3,[128,145,146],{},"    private int $end;\n",[128,148,150],{"class":130,"line":149},4,[128,151,152],{},"    private int $current;\n",[128,154,156],{"class":130,"line":155},5,[128,157,159],{"emptyLinePlaceholder":158},true,"\n",[128,161,163],{"class":130,"line":162},6,[128,164,165],{},"    public function __construct(int $start, int $end) {\n",[128,167,169],{"class":130,"line":168},7,[128,170,171],{},"        $this->start = $start;\n",[128,173,175],{"class":130,"line":174},8,[128,176,177],{},"        $this->end = $end;\n",[128,179,181],{"class":130,"line":180},9,[128,182,183],{},"    }\n",[128,185,187],{"class":130,"line":186},10,[128,188,159],{"emptyLinePlaceholder":158},[128,190,192],{"class":130,"line":191},11,[128,193,194],{},"    public function rewind(): void {\n",[128,196,198],{"class":130,"line":197},12,[128,199,200],{},"        $this->current = $this->start;\n",[128,202,204],{"class":130,"line":203},13,[128,205,183],{},[128,207,209],{"class":130,"line":208},14,[128,210,159],{"emptyLinePlaceholder":158},[128,212,214],{"class":130,"line":213},15,[128,215,216],{},"    public function current(): mixed {\n",[128,218,220],{"class":130,"line":219},16,[128,221,222],{},"        return $this->current;\n",[128,224,226],{"class":130,"line":225},17,[128,227,183],{},[128,229,231],{"class":130,"line":230},18,[128,232,159],{"emptyLinePlaceholder":158},[128,234,236],{"class":130,"line":235},19,[128,237,238],{},"    public function key(): mixed {\n",[128,240,242],{"class":130,"line":241},20,[128,243,222],{},[128,245,247],{"class":130,"line":246},21,[128,248,183],{},[128,250,252],{"class":130,"line":251},22,[128,253,159],{"emptyLinePlaceholder":158},[128,255,257],{"class":130,"line":256},23,[128,258,259],{},"    public function next(): void {\n",[128,261,263],{"class":130,"line":262},24,[128,264,265],{},"        $this->current++;\n",[128,267,269],{"class":130,"line":268},25,[128,270,183],{},[128,272,274],{"class":130,"line":273},26,[128,275,159],{"emptyLinePlaceholder":158},[128,277,279],{"class":130,"line":278},27,[128,280,281],{},"    public function valid(): bool {\n",[128,283,285],{"class":130,"line":284},28,[128,286,287],{},"        return $this->current \u003C= $this->end;\n",[128,289,291],{"class":130,"line":290},29,[128,292,183],{},[128,294,296],{"class":130,"line":295},30,[128,297,298],{},"}\n",[128,300,302],{"class":130,"line":301},31,[128,303,159],{"emptyLinePlaceholder":158},[128,305,307],{"class":130,"line":306},32,[128,308,309],{},"\u002F\u002F Kullanım\n",[128,311,313],{"class":130,"line":312},33,[128,314,315],{},"$range = new RangeIterator(1, 1000000);\n",[128,317,319],{"class":130,"line":318},34,[128,320,321],{},"foreach ($range as $number) {\n",[128,323,325],{"class":130,"line":324},35,[128,326,327],{},"    \u002F\u002F Sayıyı işle\n",[128,329,331],{"class":130,"line":330},36,[128,332,298],{},[109,334,336],{"id":335},"_2-generator-fonksiyonu-kullanmak","2. Generator Fonksiyonu Kullanmak",[11,338,339,340,342],{},"Aynı işlevselliği, ",[35,341,37],{}," kullanarak tek bir fonksiyonla çok daha az kod yazarak sağlayabiliriz:",[119,344,346],{"className":121,"code":345,"language":123,"meta":124,"style":124},"function rangeGenerator(int $start, int $end) {\n    for ($i = $start; $i \u003C= $end; $i++) {\n        yield $i;\n    }\n}\n\n\u002F\u002F Kullanım\n$range = rangeGenerator(1, 1000000);\nforeach ($range as $number) {\n    \u002F\u002F Sayıyı işle\n}\n",[35,347,348,353,358,363,367,371,375,379,384,388,392],{"__ignoreMap":124},[128,349,350],{"class":130,"line":131},[128,351,352],{},"function rangeGenerator(int $start, int $end) {\n",[128,354,355],{"class":130,"line":137},[128,356,357],{},"    for ($i = $start; $i \u003C= $end; $i++) {\n",[128,359,360],{"class":130,"line":143},[128,361,362],{},"        yield $i;\n",[128,364,365],{"class":130,"line":149},[128,366,183],{},[128,368,369],{"class":130,"line":155},[128,370,298],{},[128,372,373],{"class":130,"line":162},[128,374,159],{"emptyLinePlaceholder":158},[128,376,377],{"class":130,"line":168},[128,378,309],{},[128,380,381],{"class":130,"line":174},[128,382,383],{},"$range = rangeGenerator(1, 1000000);\n",[128,385,386],{"class":130,"line":180},[128,387,321],{},[128,389,390],{"class":130,"line":186},[128,391,327],{},[128,393,394],{"class":130,"line":191},[128,395,298],{},[11,397,398,399,402],{},"Her iki yöntem de ",[21,400,401],{},"O(1) bellek karmaşıklığı"," ile çalışır; yani 1.000.000 sayının tamamını aynı anda hafızaya yüklemezler. Ancak, Generator versiyonu çok daha az boilerplate (şablon) kod gerektirir.",[98,404],{},[101,406,408],{"id":407},"detaylı-farklar","Detaylı Farklar",[11,410,411,412,415],{},"Generator'lar ve Iterator'lar arasındaki temel farklardan biri ",[21,413,414],{},"nasıl uygulandıklarıdır",". Generator'lar basit bir fonksiyon sözdizimi ile oluşturulurken, Iterator'lar bir sınıf içinde arayüz uygulanarak oluşturulur. Bu, Generator'ların yazılmasını ve okunmasını son derece kolaylaştırır. Ancak Iterator'lar, tüm lifecycle metotlarını elinizle yazmanıza izin verdiği için yineleme süreci üzerinde daha fazla esneklik ve kontrol sağlar.",[11,417,418,419,422,423,426,427,82,430,433],{},"Diğer bir fark ise ",[21,420,421],{},"kullanım şekilleridir",". Generator'lar, herhangi bir iterable nesne gibi doğrudan ",[35,424,425],{},"foreach"," döngüsünde kullanılabilir ve oldukça pratiktir. Iterator'lar ise gerektiğinde döngü metodları (",[35,428,429],{},"next()",[35,431,432],{},"current()",") manuel olarak çağrılarak daha hassas akış kontrolleri yapılmasına imkan tanır.",[109,435,437],{"id":436},"özellik-karşılaştırma-tablosu","Özellik Karşılaştırma Tablosu",[439,440,441,458],"table",{},[442,443,444],"thead",{},[445,446,447,452,455],"tr",{},[448,449,451],"th",{"align":450},"left","Özellik",[448,453,454],{"align":450},"Generators",[448,456,457],{"align":450},"Iterators",[459,460,461,479,492,504,521],"tbody",{},[445,462,463,469,474],{},[464,465,466],"td",{"align":450},[21,467,468],{},"Sözdizimi (Syntax)",[464,470,471,473],{"align":450},[35,472,37],{}," içeren fonksiyon",[464,475,476,478],{"align":450},[35,477,46],{}," arayüzünü uygulayan sınıf",[445,480,481,486,489],{},[464,482,483],{"align":450},[21,484,485],{},"Kod Yoğunluğu (Boilerplate)",[464,487,488],{"align":450},"Çok az",[464,490,491],{"align":450},"Fazla (5 metot zorunludur)",[445,493,494,499,502],{},[464,495,496],{"align":450},[21,497,498],{},"Hafıza Tüketimi (Memory)",[464,500,501],{"align":450},"Düşük (O(1))",[464,503,501],{"align":450},[445,505,506,511,514],{},[464,507,508],{"align":450},[21,509,510],{},"Başa Sarılabilme (Rewind)",[464,512,513],{"align":450},"Hayır (Kapatıldıktan sonra geri sarılamaz)",[464,515,516,517,520],{"align":450},"Evet (",[35,518,519],{},"rewind()"," metodu desteklenir)",[445,522,523,528,531],{},[464,524,525],{"align":450},[21,526,527],{},"Durum Yönetimi (State)",[464,529,530],{"align":450},"PHP motoru tarafından otomatik yönetilir",[464,532,533],{"align":450},"Sınıf özellikleri üzerinden manuel yönetilir",[98,535],{},[101,537,539],{"id":538},"sıkça-sorulan-sorular-faq","Sıkça Sorulan Sorular (FAQ)",[25,541,542,555],{},[28,543,544,547],{},[21,545,546],{},"PHP'de bir Generator başa sarılabilir (rewind) mi?",[25,548,549],{},[28,550,551,552,554],{},"Hayır. Bir generator fonksiyonu bir kez çalışıp sonlandığında veya kapatıldığında geri sarılamaz. Aynı generator nesnesini ikinci kez ",[35,553,425],{}," içinde döndürmeye çalışırsanız hata alırsınız. Tekrar yinelemek için generator fonksiyonunu yeniden çağırıp yeni bir Generator nesnesi üretmelisiniz.",[28,556,557,560],{},[21,558,559],{},"Ne zaman bir Generator yerine özel bir Iterator sınıfı tercih etmeliyim?",[25,561,562],{},[28,563,564,565,567],{},"Eğer yineleme nesnesine ek iş mantığı (business logic) eklemeniz gerekiyorsa, yineleme durumu çok fazla özel değişkene bağlı ve karmaşıksa veya döngünün birden fazla kez geriye sarılıp tekrar çalıştırılması gerekiyorsa (data source'u yeniden oluşturmadan) bir ",[35,566,46],{}," sınıfı yazmak daha doğru bir yaklaşımdır.",[98,569],{},[101,571,573],{"id":572},"resmi-dokümantasyonlar-ve-kaynaklar","Resmi Dokümantasyonlar ve Kaynaklar",[25,575,576,588],{},[28,577,578],{},[579,580,587],"a",{"href":581,"rel":582,"target":586},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Ftr\u002Flanguage.generators.php",[583,584,585],"nofollow","noopener","noreferrer","_blank","PHP Resmi Kılavuzu: Generators",[28,589,590],{},[579,591,594],{"href":592,"rel":593,"target":586},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Ftr\u002Fclass.iterator.php",[583,584,585],"PHP Resmi Kılavuzu: Iterator Arayüzü",[11,596,597],{},"Sonuç olarak, hem Generator'lar hem de Iterator'lar PHP'de özel yineleme akışları oluşturmak için harika araçlardır. Seçiminiz, projenizin karmaşıklığına ve geriye sarılabilirlik gibi spesifik ihtiyaçlarına göre şekillenmelidir.",[599,600,602],"h5",{"id":601},"bu-yazıda-yapılan-değişiklikler","Bu Yazıda Yapılan Değişiklikler",[25,604,605],{},[28,606,607],{},"20.06.2026: Yazı ilk kez yayınlandı (karşılaştırmalı kod örnekleri, tablo ve LLO geliştirmeleri ile birlikte).",[609,610,611],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":124,"searchDepth":137,"depth":137,"links":613},[614,618,621,622],{"id":103,"depth":137,"text":104,"children":615},[616,617],{"id":111,"depth":143,"text":112},{"id":335,"depth":143,"text":336},{"id":407,"depth":137,"text":408,"children":619},[620],{"id":436,"depth":143,"text":437},{"id":538,"depth":137,"text":539},{"id":572,"depth":137,"text":573},[624],"technical",null,"2026-06-20","PHP'de custom iterasyon yapıları oluşturmak için kullanılan Generator ve Iterator kavramlarının farklarını, kod örneklerini ve kullanım alanlarını öğrenin.",false,"md","\u002Fimages\u002Fhero\u002Fgenerators-vs-iterators.avif",{},"\u002Ftr\u002Fphp-generator-ve-iterator-farki",{"title":6,"description":627},"php-generator-ve-iterator-farki","tr\u002Fphp-generator-ve-iterator-farki",[123,637,638],"oop","performance","php-generators-vs-iterators","8Ck21xVO2G7ERLM_9N7eSWHXA7tZ2D46fLl1Fjlishc",{"path":642},"\u002Fdifference-between-generators-and-iterators-in-php",{"prev":644,"next":647,"others":650,"lucky":769,"readingTime":149},{"path":645,"title":646},"\u002Ftr\u002Fes17-nedir-ecmascript-2026-nedir","ES17 nedir? ECMAScript 2026 nedir?",{"path":648,"title":649},"\u002Ftr\u002Fphp-ve-makine-ogrenimi-php-ml-kutuphanesi","PHP ve Makine Öğrenimi: PHP-ML Kütüphanesi ile Pratik Çözümler",[651,654,657,660,663,666,669,672,675,678,681,684,687,690,693,696,699,702,705,708,711,714,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766],{"path":652,"title":653},"\u002Ftr\u002Frest-api-uri-yapisi-nasil-olmali","REST API URI Yapısı Nasıl Olmalı?",{"path":655,"title":656},"\u002Ftr\u002Fcomposite-tasarim-deseni-nedir","Composite Tasarım Deseni Nedir?",{"path":658,"title":659},"\u002Ftr\u002Fjwt-guvenli-mi-guvenlik-acigi-olusturmayin","JWT Güvenli Derken Güvenlik Açığı Oluşturmayın",{"path":661,"title":662},"\u002Ftr\u002Fgo-slice-veri-tipi","Go Veri Tipleri: Slice",{"path":664,"title":665},"\u002Ftr\u002Ffacade-tasarim-deseni-nedir","Facade Tasarım Deseni Nedir?",{"path":667,"title":668},"\u002Ftr\u002Fvite-nedir","Vite Nedir? Modern Web Geliştirme ve Paketleme Aracı",{"path":670,"title":671},"\u002Ftr\u002Fubuntu-24-04-uzerinde-cyberpanel-kurulumu","Ubuntu 24.04 LTS ve 22.04 LTS Üzerinde CyberPanel Kurulumu",{"path":673,"title":674},"\u002Ftr\u002Fopenlitespeed-ve-litespeed-enterprisei-reverse-proxy-olarak-kullanmak","OpenLiteSpeed ve LiteSpeed Enterprise Sunucularını Reverse Proxy Olarak Kullanmak",{"path":676,"title":677},"\u002Ftr\u002Ffull-stack-proje-gelistiriyoruz","Full Stack Proje Geliştiriyoruz",{"path":679,"title":680},"\u002Ftr\u002Fstrategy-tasarim-deseni-nedir","Strategy Tasarım Deseni Nedir?",{"path":682,"title":683},"\u002Ftr\u002Frest-api-dokumantasyonu-nasil-yapilir","REST Api Dokümantasyonu Nasıl Oluşturulur?",{"path":685,"title":686},"\u002Ftr\u002Fdocker-ile-mariadb-kurulumu","Docker ile MariaDB Kurulumu",{"path":688,"title":689},"\u002Ftr\u002Fwsl-2-kurulumu-6-kolay-adim","WSL 2 Kurulumu - 6 kolay adım",{"path":691,"title":692},"\u002Ftr\u002Fes11-nedir-ecmascript-2020-nedir","ES11 Nedir? ECMAScript 2020 Nedir?",{"path":694,"title":695},"\u002Ftr\u002Fgoda-iota-nedir-iota-ne-zaman-ve-nerede-kullanilir","Go'da iota Nedir? iota Ne Zaman ve Nerede Kullanılır?",{"path":697,"title":698},"\u002Ftr\u002Ffactory-method-ve-abstract-factory-farki-nedir","Factory Method ve Abstract Factory Farkı Nedir?",{"path":700,"title":701},"\u002Ftr\u002Fphp-8-0-yenilikler","Merhaba PHP 8: Modern PHP 8.x Çağı",{"path":703,"title":704},"\u002Ftr\u002Fes13-nedir-ecmascript-2022-nedir","ES13 nedir? ECMAScript 2022 nedir?",{"path":706,"title":707},"\u002Ftr\u002Fubuntu-20-04-uzerinde-cyberpanel-kurulumu","Ubuntu 20.04 üzerinde CyberPanel kurulumu",{"path":709,"title":710},"\u002Ftr\u002Frestapi-ve-hateoas-kavrami","RestApi ve HATEOAS Kavramı",{"path":712,"title":713},"\u002Ftr\u002Fmerhaba-tailwind-css","Merhaba Tailwind CSS",{"path":648,"title":649},{"path":716,"title":717},"\u002Ftr\u002Fcodeserver-nedir-codeserver-nasil-kurulur","Code-Server Nedir? Bulutta VS Code Geliştirme Ortamı Kurulumu",{"path":719,"title":720},"\u002Ftr\u002Fgo-veri-tipleri-struct","Go Veri Tipleri: Struct",{"path":722,"title":723},"\u002Ftr\u002Fdocker-nedir","Docker Nedir?",{"path":725,"title":726},"\u002Ftr\u002Fsingleton-tasarim-deseni-nedir","Singleton Tasarım Deseni Nedir?",{"path":728,"title":729},"\u002Ftr\u002Fnostalji-ibibik-online","Nostalji: İbibik Online (1998'den Bir Web Macerası)",{"path":731,"title":732},"\u002Ftr\u002Fes9-nedir-ecmascript-2018-nedir","ES9 Nedir? ECMAScript 2018 Nedir?",{"path":734,"title":735},"\u002Ftr\u002Fwordpress-yonetici-sifresini-wp-cli-kullanarak-sifirlama","WordPress Yönetici Şifresini WP-CLI Kullanarak Sıfırlama",{"path":737,"title":738},"\u002Ftr\u002Ftemiz-moduler-ve-yeniden-kullanilabilir-php-kodu-yazma-rehberi","PHP'de Temiz, Modüler ve Yeniden Kullanılabilir Kod Yazma Rehberi",{"path":740,"title":741},"\u002Ftr\u002Fes12-nedir-ecmascript-2021-nedir","ES12 Nedir? ECMAScript 2021 Nedir?",{"path":743,"title":744},"\u002Ftr\u002Fes8-nedir-ecmascript-2017-nedir","ES8 Nedir? ECMAScript 2017 Nedir?",{"path":746,"title":747},"\u002Ftr\u002Ffull-stack-proje-agaci","Full-Stack Proje Yol Haritası ve İçindekiler",{"path":749,"title":750},"\u002Ftr\u002Fvisitor-tasarim-deseni-nedir","Visitor Tasarım Deseni Nedir?",{"path":752,"title":753},"\u002Ftr\u002Fes10-nedir-ecmascript-2019-nedir","ES10 Nedir? ECMAScript 2019 Nedir?",{"path":755,"title":756},"\u002Ftr\u002Fmediator-tasarim-deseni-nedir","Mediator Tasarım Deseni Nedir?",{"path":758,"title":759},"\u002Ftr\u002Fyeni-tema-honeywind","Yeni WordPress Temam Honeywind: Tailwind CSS ve Minimalizm",{"path":761,"title":762},"\u002Ftr\u002Fproxy-tasarim-deseni-nedir","Proxy Tasarım Deseni Nedir?",{"path":764,"title":765},"\u002Ftr\u002Flitespeed-web-server-performans-artisi","Konfor Alanından Çıkıp, Konforlu Bir VPS'e Geçmek: LiteSpeed Web Server",{"path":767,"title":768},"\u002Ftr\u002Fcommand-tasarim-deseni-nedir","Command Tasarım Deseni Nedir?",{"path":770,"title":771},"\u002Ftr\u002Flinuxda-golang-kurulumu","Linux'ta Golang Kurulumu",[773,774,776,780],{"path":648,"title":649,"date":626},{"path":737,"title":738,"date":775},"2023-01-17",{"path":777,"title":778,"date":779},"\u002Ftr\u002Fearly-return-erken-donus-nedir","Early Return \u002F Erken Dönüş nedir?","2021-09-11",{"path":781,"title":782,"date":783},"\u002Ftr\u002Fprogralama-ipucu-yoda-gosterimi","Yoda Koşulları (Yoda Conditions) Nedir? Programlama İpucu","2021-07-23",[785,789,791],{"path":786,"title":787,"date":788},"\u002Ftr\u002Fchain-of-responsibility-deseni-nedir","Chain of Responsibility Deseni Nedir?","2021-10-01",{"path":725,"title":726,"date":790},"2021-08-17",{"path":792,"title":793,"date":794},"\u002Ftr\u002Fadapter-tasarim-deseni-nedir","Adapter Tasarım Deseni Nedir?","2021-08-21",1782141998553]