[{"data":1,"prerenderedAt":838},["ShallowReactive",2],{"post-\u002Ftr\u002Ftemiz-moduler-ve-yeniden-kullanilabilir-php-kodu-yazma-rehberi":3},{"page":4,"translation":681,"nav":683,"related":814,"random":828},{"id":5,"title":6,"body":7,"categories":662,"category":664,"date":665,"description":666,"draft":667,"extension":668,"image":669,"kind":664,"lang":473,"meta":670,"navigation":145,"path":671,"readingTime":118,"seo":672,"slug":673,"stem":674,"tags":675,"translationKey":679,"type":663,"updated":664,"__hash__":680},"postsTr\u002Ftr\u002Ftemiz-moduler-ve-yeniden-kullanilabilir-php-kodu-yazma-rehberi.md","PHP'de Temiz, Modüler ve Yeniden Kullanılabilir Kod Yazma Rehberi",{"type":8,"value":9,"toc":648},"minimark",[10,14,52,55,60,71,76,79,86,171,178,354,356,360,367,370,372,376,379,393,399,460,462,466,546,548,552,556,566,570,573,593,597,600,602,606,634,639,644],[11,12,13],"p",{},"Temiz, modüler ve yeniden kullanılabilir kod yazmak, profesyonel yazılım mühendisliğinin temel taşlarından biridir. Basit bir betik dilinden tip güvenli (type-safe) ve nesne yönelimli (OOP) güçlü bir dile dönüşen PHP ekosisteminde, temiz kod standartlarına uymak büyük ölçekli uygulamaların sürdürülebilirliği için kritik önem taşır.",[15,16,17,24],"blockquote",{},[11,18,19,20],{},"💡 ",[21,22,23],"strong",{},"Özet (TL;DR):",[25,26,27,34,40,46],"ul",{},[28,29,30,33],"li",{},[21,31,32],{},"Temiz Kod:"," Okunması, yazılması ve bakımı kolay olan koddur. Tutarlı bir tarz (PSR-12) takip eder ve tekrarlardan kaçınır.",[28,35,36,39],{},[21,37,38],{},"SOLID Prensipleri:"," Kodun çürümesini engelleyen ve yazılımı esnek kılan beş tasarım ilkesidir (SRP, OCP, LSP, ISP, DIP).",[28,41,42,45],{},[21,43,44],{},"Modülerlik:"," Bağımlılık Enjeksiyonu (Dependency Injection - DI) kullanarak kodu küçük, bağımsız bileşenlere bölmektir.",[28,47,48,51],{},[21,49,50],{},"Otomasyon:"," Standartları uygulamak ve hataları erkenden yakalamak için PHP_CodeSniffer, PHPStan ve PHPUnit gibi araçlar kullanılır.",[53,54],"hr",{},[56,57,59],"h2",{"id":58},"_1-solid-prensipleri-ve-pratik-uygulamaları","1. SOLID Prensipleri ve Pratik Uygulamaları",[11,61,62,63,66,67,70],{},"SOLID prensipleri teorik olarak çok konuşulsa da, bunları PHP üzerinde uygulamalı olarak görmek faydalarını daha net anlamamızı sağlar. En sık ihlal edilen iki ilkeye odaklanalım: ",[21,64,65],{},"SRP"," ve ",[21,68,69],{},"DIP",".",[72,73,75],"h3",{"id":74},"tek-sorumluluk-i̇lkesi-single-responsibility-principle-srp","Tek Sorumluluk İlkesi (Single Responsibility Principle - SRP)",[11,77,78],{},"Bir sınıfın değişmek için yalnızca tek bir nedeni olmalıdır.",[11,80,81,82,85],{},"❌ ",[21,83,84],{},"Kötü Pratik (SRP İhlali):","\nAşağıdaki sınıf kullanıcı kaydı, veritabanı işlemleri ve e-posta gönderimini tek bir yerde gerçekleştirmektedir.",[87,88,93],"pre",{"className":89,"code":90,"language":91,"meta":92,"style":92},"language-php shiki shiki-themes github-light github-dark","class UserRegistration {\n    public function register(array $data) {\n        \u002F\u002F Kullanıcı verilerini doğrula\n        \u002F\u002F Veritabanına bağlan ve kaydet\n        $db = new PDO('mysql:host=localhost;dbname=test', 'root', '');\n        $stmt = $db->prepare(\"INSERT INTO users (username, email) VALUES (?, ?)\");\n        $stmt->execute([$data['username'], $data['email']]);\n\n        \u002F\u002F Hoş geldin e-postası gönder\n        mail($data['email'], \"Welcome!\", \"Thanks for registering.\");\n    }\n}\n","php","",[94,95,96,104,110,116,122,128,134,140,147,153,159,165],"code",{"__ignoreMap":92},[97,98,101],"span",{"class":99,"line":100},"line",1,[97,102,103],{},"class UserRegistration {\n",[97,105,107],{"class":99,"line":106},2,[97,108,109],{},"    public function register(array $data) {\n",[97,111,113],{"class":99,"line":112},3,[97,114,115],{},"        \u002F\u002F Kullanıcı verilerini doğrula\n",[97,117,119],{"class":99,"line":118},4,[97,120,121],{},"        \u002F\u002F Veritabanına bağlan ve kaydet\n",[97,123,125],{"class":99,"line":124},5,[97,126,127],{},"        $db = new PDO('mysql:host=localhost;dbname=test', 'root', '');\n",[97,129,131],{"class":99,"line":130},6,[97,132,133],{},"        $stmt = $db->prepare(\"INSERT INTO users (username, email) VALUES (?, ?)\");\n",[97,135,137],{"class":99,"line":136},7,[97,138,139],{},"        $stmt->execute([$data['username'], $data['email']]);\n",[97,141,143],{"class":99,"line":142},8,[97,144,146],{"emptyLinePlaceholder":145},true,"\n",[97,148,150],{"class":99,"line":149},9,[97,151,152],{},"        \u002F\u002F Hoş geldin e-postası gönder\n",[97,154,156],{"class":99,"line":155},10,[97,157,158],{},"        mail($data['email'], \"Welcome!\", \"Thanks for registering.\");\n",[97,160,162],{"class":99,"line":161},11,[97,163,164],{},"    }\n",[97,166,168],{"class":99,"line":167},12,[97,169,170],{},"}\n",[11,172,173,174,177],{},"✔️ ",[21,175,176],{},"İyi Pratik (SRP Uyumlu):","\nSorumlulukları veritabanı işlemleri için bir repository katmanına ve iletişim için bir e-posta servisine bölüyoruz.",[87,179,181],{"className":89,"code":180,"language":91,"meta":92,"style":92},"class UserRepository {\n    private PDO $db;\n\n    public function __construct(PDO $db) {\n        $this->db = $db;\n    }\n\n    public function save(User $user): void {\n        $stmt = $this->db->prepare(\"INSERT INTO users (username, email) VALUES (?, ?)\");\n        $stmt->execute([$user->getUsername(), $user->getEmail()]);\n    }\n}\n\nclass EmailService {\n    public function sendWelcomeEmail(string $email): void {\n        mail($email, \"Welcome!\", \"Thanks for registering.\");\n    }\n}\n\nclass UserRegistration {\n    private UserRepository $repository;\n    private EmailService $emailService;\n\n    public function __construct(UserRepository $repository, EmailService $emailService) {\n        $this->repository = $repository;\n        $this->emailService = $emailService;\n    }\n\n    public function register(User $user): void {\n        $this->repository->save($user);\n        $this->emailService->sendWelcomeEmail($user->getEmail());\n    }\n}\n",[94,182,183,188,193,197,202,207,211,215,220,225,230,234,238,243,249,255,261,266,271,276,281,287,293,298,304,310,316,321,326,332,338,344,349],{"__ignoreMap":92},[97,184,185],{"class":99,"line":100},[97,186,187],{},"class UserRepository {\n",[97,189,190],{"class":99,"line":106},[97,191,192],{},"    private PDO $db;\n",[97,194,195],{"class":99,"line":112},[97,196,146],{"emptyLinePlaceholder":145},[97,198,199],{"class":99,"line":118},[97,200,201],{},"    public function __construct(PDO $db) {\n",[97,203,204],{"class":99,"line":124},[97,205,206],{},"        $this->db = $db;\n",[97,208,209],{"class":99,"line":130},[97,210,164],{},[97,212,213],{"class":99,"line":136},[97,214,146],{"emptyLinePlaceholder":145},[97,216,217],{"class":99,"line":142},[97,218,219],{},"    public function save(User $user): void {\n",[97,221,222],{"class":99,"line":149},[97,223,224],{},"        $stmt = $this->db->prepare(\"INSERT INTO users (username, email) VALUES (?, ?)\");\n",[97,226,227],{"class":99,"line":155},[97,228,229],{},"        $stmt->execute([$user->getUsername(), $user->getEmail()]);\n",[97,231,232],{"class":99,"line":161},[97,233,164],{},[97,235,236],{"class":99,"line":167},[97,237,170],{},[97,239,241],{"class":99,"line":240},13,[97,242,146],{"emptyLinePlaceholder":145},[97,244,246],{"class":99,"line":245},14,[97,247,248],{},"class EmailService {\n",[97,250,252],{"class":99,"line":251},15,[97,253,254],{},"    public function sendWelcomeEmail(string $email): void {\n",[97,256,258],{"class":99,"line":257},16,[97,259,260],{},"        mail($email, \"Welcome!\", \"Thanks for registering.\");\n",[97,262,264],{"class":99,"line":263},17,[97,265,164],{},[97,267,269],{"class":99,"line":268},18,[97,270,170],{},[97,272,274],{"class":99,"line":273},19,[97,275,146],{"emptyLinePlaceholder":145},[97,277,279],{"class":99,"line":278},20,[97,280,103],{},[97,282,284],{"class":99,"line":283},21,[97,285,286],{},"    private UserRepository $repository;\n",[97,288,290],{"class":99,"line":289},22,[97,291,292],{},"    private EmailService $emailService;\n",[97,294,296],{"class":99,"line":295},23,[97,297,146],{"emptyLinePlaceholder":145},[97,299,301],{"class":99,"line":300},24,[97,302,303],{},"    public function __construct(UserRepository $repository, EmailService $emailService) {\n",[97,305,307],{"class":99,"line":306},25,[97,308,309],{},"        $this->repository = $repository;\n",[97,311,313],{"class":99,"line":312},26,[97,314,315],{},"        $this->emailService = $emailService;\n",[97,317,319],{"class":99,"line":318},27,[97,320,164],{},[97,322,324],{"class":99,"line":323},28,[97,325,146],{"emptyLinePlaceholder":145},[97,327,329],{"class":99,"line":328},29,[97,330,331],{},"    public function register(User $user): void {\n",[97,333,335],{"class":99,"line":334},30,[97,336,337],{},"        $this->repository->save($user);\n",[97,339,341],{"class":99,"line":340},31,[97,342,343],{},"        $this->emailService->sendWelcomeEmail($user->getEmail());\n",[97,345,347],{"class":99,"line":346},32,[97,348,164],{},[97,350,352],{"class":99,"line":351},33,[97,353,170],{},[53,355],{},[56,357,359],{"id":358},"_2-bağımlılık-enjeksiyonu-dependency-injection-ve-modülerlik","2. Bağımlılık Enjeksiyonu (Dependency Injection) ve Modülerlik",[11,361,362,363,366],{},"Modüler kod, gevşek bağlı (loosely coupled) küçük birimlerden oluşur. Sınıfların içinde sabit kodlu bağımlılıklar oluşturmak yerine, bu bağımlılıkları dışarıdan parametre olarak geçmek (Constructor Injection) en iyi yöntemdir (Yukarıdaki ",[94,364,365],{},"UserRepository"," örneğinde olduğu gibi).",[11,368,369],{},"Uygulamanız büyüdükçe bağımlılıkları yönetmek için bir DI Konteyneri (PHP-DI, Laravel Service Container veya Symfony DependencyInjection gibi) kullanmak, kod tabanını test edilebilir kılar ve birim testler sırasında sahte nesneler (mock) kullanmayı kolaylaştırır.",[53,371],{},[56,373,375],{"id":374},"_3-psr-standartlarına-uyum","3. PSR Standartlarına Uyum",[11,377,378],{},"Yazdığınız kodun diğer geliştiriciler tarafından kolayca anlaşılabilmesi için PHP Framework Interop Group (PHP-FIG) tarafından belirlenen standartlara uymalısınız.",[25,380,381,387],{},[28,382,383,386],{},[21,384,385],{},"PSR-1 (Temel Kodlama Standardı):"," Dosya yapısı, adlandırma kuralları (CamelCase sınıflar, büyük harf sabitler) ve ad alanları (namespaces) için temel kuralları belirler.",[28,388,389,392],{},[21,390,391],{},"PSR-12 (Genişletilmiş Kod Tarzı Kılavuzu):"," Kullanımdan kaldırılan PSR-2'nin yerini almıştır. Süslü parantezlerin konumlandırılması, girintileme (her zaman 4 boşluk, asla tab değil), satır uzunlukları ve tip tanımlamaları hakkında katı kurallar içerir.",[11,394,395],{},[396,397,398],"em",{},"Hızlı Bir PSR-12 Örneği:",[87,400,402],{"className":89,"code":401,"language":91,"meta":92,"style":92},"namespace App\\Services;\n\nuse App\\Models\\User;\n\nclass UserService\n{\n    public function createUser(array $data): User\n    {\n        \u002F\u002F 4 boşluk girinti, sınıf\u002Fmetot süslü parantezleri alt satırda başlar\n        return new User($data);\n    }\n}\n",[94,403,404,409,413,418,422,427,432,437,442,447,452,456],{"__ignoreMap":92},[97,405,406],{"class":99,"line":100},[97,407,408],{},"namespace App\\Services;\n",[97,410,411],{"class":99,"line":106},[97,412,146],{"emptyLinePlaceholder":145},[97,414,415],{"class":99,"line":112},[97,416,417],{},"use App\\Models\\User;\n",[97,419,420],{"class":99,"line":118},[97,421,146],{"emptyLinePlaceholder":145},[97,423,424],{"class":99,"line":124},[97,425,426],{},"class UserService\n",[97,428,429],{"class":99,"line":130},[97,430,431],{},"{\n",[97,433,434],{"class":99,"line":136},[97,435,436],{},"    public function createUser(array $data): User\n",[97,438,439],{"class":99,"line":142},[97,440,441],{},"    {\n",[97,443,444],{"class":99,"line":149},[97,445,446],{},"        \u002F\u002F 4 boşluk girinti, sınıf\u002Fmetot süslü parantezleri alt satırda başlar\n",[97,448,449],{"class":99,"line":155},[97,450,451],{},"        return new User($data);\n",[97,453,454],{"class":99,"line":161},[97,455,164],{},[97,457,458],{"class":99,"line":167},[97,459,170],{},[53,461],{},[56,463,465],{"id":464},"kod-kalitesi-karşılaştırma-tablosu","Kod Kalitesi Karşılaştırma Tablosu",[467,468,469,486],"table",{},[470,471,472],"thead",{},[473,474,475,480,483],"tr",{},[476,477,479],"th",{"align":478},"left","Özellik",[476,481,482],{"align":478},"Eski \u002F Spagetti Kod",[476,484,485],{"align":478},"Temiz ve Modüler Kod",[487,488,489,503,520,533],"tbody",{},[473,490,491,497,500],{},[492,493,494],"td",{"align":478},[21,495,496],{},"Test Edilebilirlik",[492,498,499],{"align":478},"Zor, gerçek veritabanı ve SMTP sunucuları gerektirir",[492,501,502],{"align":478},"Kolay, bağımsız modüller mock nesnelerle kolayca test edilir",[473,504,505,510,517],{},[492,506,507],{"align":478},[21,508,509],{},"Bağımlılık (Coupling)",[492,511,512,513,516],{"align":478},"Yüksek (",[94,514,515],{},"new"," anahtar kelimesi ile sıkı bağ)",[492,518,519],{"align":478},"Düşük (Arayüzler ve DI ile gevşek bağ)",[473,521,522,527,530],{},[492,523,524],{"align":478},[21,525,526],{},"Okunabilirlik",[492,528,529],{"align":478},"Karmaşık, uzun metotlar, iç içe geçmiş koşullar",[492,531,532],{"align":478},"Yüksek, tek bir işe odaklanmış kısa metotlar",[473,534,535,540,543],{},[492,536,537],{"align":478},[21,538,539],{},"Genişletilebilirlik",[492,541,542],{"align":478},"Mevcut özellikleri bozma riski yüksektir",[492,544,545],{"align":478},"Güvenli, Açık-Kapalı Prensibine (OCP) uygundur",[53,547],{},[56,549,551],{"id":550},"sıkça-sorulan-sorular-faq","Sıkça Sorulan Sorular (FAQ)",[72,553,555],{"id":554},"temiz-kodda-arayüz-interface-ve-soyut-sınıf-abstract-class-farkı-nedir","Temiz kodda Arayüz (Interface) ve Soyut Sınıf (Abstract Class) farkı nedir?",[11,557,558,561,562,565],{},[21,559,560],{},"Arayüzler (Interface),"," bir sınıfın ne yapabileceğini belirleyen davranış sözleşmeleridir, kod içermezler. ",[21,563,564],{},"Soyut Sınıflar (Abstract Class) ise"," ortak kod paylaşımını ve sınıfların bu davranışı nasıl gerçekleştireceğini tanımlamak için kullanılır.",[72,567,569],{"id":568},"phpde-kod-standartlarını-nasıl-otomatik-hale-getirebilirim","PHP'de kod standartlarını nasıl otomatik hale getirebilirim?",[11,571,572],{},"Kod formatını manuel olarak kontrol etmeniz gerekmez. Aşağıdaki araçlarla bunu otomatikleştirebilirsiniz:",[25,574,575,581,587],{},[28,576,577,580],{},[21,578,579],{},"PHP_CodeSniffer (PHPCS):"," Kodu inceler ve PSR-12 standartlarına göre otomatik olarak biçimlendirir.",[28,582,583,586],{},[21,584,585],{},"PHPStan \u002F Psalm:"," Statik analiz araçlarıdır. Kodu çalıştırmadan tip hatalarını ve olası çalışma zamanı hatalarını yakalar.",[28,588,589,592],{},[21,590,591],{},"Laravel Pint \u002F FriendsofPHP\u002FPHP-CS-Fixer:"," Kod stilini otomatik düzelten araçlardır.",[72,594,596],{"id":595},"singleton-tasarım-deseni-kötü-bir-pratik-midir","Singleton Tasarım Deseni kötü bir pratik midir?",[11,598,599],{},"Singleton klasik bir tasarım deseni olsa da, modern PHP dünyasında genellikle bir \"anti-pattern\" olarak kabul edilir. Küresel durumu (global state) yönettiği, birim testleri zorlaştırdığı ve bağımlılıkları gizlediği için Bağımlılık Enjeksiyonu (DI) neredeyse her zaman daha iyi bir seçenektir.",[53,601],{},[56,603,605],{"id":604},"resmi-kaynaklar","Resmi Kaynaklar",[25,607,608,620,627],{},[28,609,610],{},[611,612,619],"a",{"href":613,"rel":614,"target":618},"https:\u002F\u002Fwww.php-fig.org\u002F",[615,616,617],"nofollow","noopener","noreferrer","_blank","PHP-FIG Standartları",[28,621,622],{},[611,623,626],{"href":624,"rel":625,"target":618},"https:\u002F\u002Fphp-di.org\u002F",[615,616,617],"PHP-DI Dokümantasyonu",[28,628,629],{},[611,630,633],{"href":631,"rel":632,"target":618},"https:\u002F\u002Fphpstan.org\u002F",[615,616,617],"PHPStan Resmi Web Sitesi",[635,636,638],"h5",{"id":637},"bu-yazıda-yapılan-değişiklikler","Bu Yazıda Yapılan Değişiklikler",[25,640,641],{},[28,642,643],{},"20.06.2026: Yazı ilk kez yayınlandı (karşılaştırmalı kod örnekleri, SOLID uygulamaları, karşılaştırma tablosu ve İngilizce sürüm bağlantısı ile birlikte).",[645,646,647],"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":92,"searchDepth":106,"depth":106,"links":649},[650,653,654,655,656,661],{"id":58,"depth":106,"text":59,"children":651},[652],{"id":74,"depth":112,"text":75},{"id":358,"depth":106,"text":359},{"id":374,"depth":106,"text":375},{"id":464,"depth":106,"text":465},{"id":550,"depth":106,"text":551,"children":657},[658,659,660],{"id":554,"depth":112,"text":555},{"id":568,"depth":112,"text":569},{"id":595,"depth":112,"text":596},{"id":604,"depth":106,"text":605},[663],"technical",null,"2023-01-17","SOLID prensipleri, tasarım desenleri ve PSR standartlarını kullanarak PHP'de nasıl temiz, modüler ve yeniden kullanılabilir kod yazılacağını pratik örneklerle öğrenin.",false,"md","\u002Fimages\u002Fhero\u002Fclean-modular-code.avif",{},"\u002Ftr\u002Ftemiz-moduler-ve-yeniden-kullanilabilir-php-kodu-yazma-rehberi",{"title":6,"description":666},"temiz-moduler-ve-yeniden-kullanilabilir-php-kodu-yazma-rehberi","tr\u002Ftemiz-moduler-ve-yeniden-kullanilabilir-php-kodu-yazma-rehberi",[91,676,677,678],"psr","solid","temiz-kod","clean-php-code","PqcNGyCWZ4uoZPU6_vNQkOj3nMnII-1RGkMz1uOwYCk",{"path":682},"\u002Fwriting-clean-modular-and-reusable-code-in-php",{"prev":684,"next":687,"others":690,"lucky":811,"readingTime":118},{"path":685,"title":686},"\u002Ftr\u002Fwordpress-yonetici-sifresini-wp-cli-kullanarak-sifirlama","WordPress Yönetici Şifresini WP-CLI Kullanarak Sıfırlama",{"path":688,"title":689},"\u002Ftr\u002Fself-hosted-api-gateway-nasil-kurulur-kapsamli-rehber","Self-Hosted API Gateway Nasıl Kurulur? Kapsamlı Rehber",[691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796,799,802,805,808],{"path":692,"title":693},"\u002Ftr\u002Ftasarim-kaliplari-design-patterns-abstract-factory-nedir","Abstract Factory Tasarım Deseni Nedir?",{"path":695,"title":696},"\u002Ftr\u002Fes10-nedir-ecmascript-2019-nedir","ES10 Nedir? ECMAScript 2019 Nedir?",{"path":698,"title":699},"\u002Ftr\u002Froot-yetkisi-olmayan-kullanici-ssh-baglantisini-ssh-baglantisini-ssh-anahtari-ile-nasil-kurabilir","Root yetkisi olmayan kullanıcı, SSH bağlantısını, SSH anahtarı ile nasıl kurabilir?",{"path":701,"title":702},"\u002Ftr\u002Fekran-filtresi-mavi-isik-filtresi-flux","Gözlere dost, mavi ışığa düşman ekran filtresi f.lux",{"path":704,"title":705},"\u002Ftr\u002Fgo-programlama-dilinin-ozellikleri","Go Programlama Dilinin Özellikleri",{"path":707,"title":708},"\u002Ftr\u002Fmerhaba-phalcon-framework","Merhaba Phalcon Framework",{"path":710,"title":711},"\u002Ftr\u002Fdocker-nedir","Docker Nedir?",{"path":713,"title":714},"\u002Ftr\u002Fdocker-ile-mongodb-kurulumu","Docker ile MongoDB Kurulumu",{"path":716,"title":717},"\u002Ftr\u002Fgo-veri-tipleri-struct","Go Veri Tipleri: Struct",{"path":719,"title":720},"\u002Ftr\u002Frest-api-dokumantasyonu-nasil-yapilir","REST Api Dokümantasyonu Nasıl Oluşturulur?",{"path":722,"title":723},"\u002Ftr\u002Fecmascript-nedir-ecmascript-ne-degildir-bilinmesi-gerekenler","ECMAScript Nedir? Bilinmesi Gerekenler...",{"path":725,"title":726},"\u002Ftr\u002Faws-ec2-uzerinde-docker-ve-full-stack-web-performansi","AWS EC2 Üzerinde Docker ve Full Stack Web Performansı",{"path":728,"title":729},"\u002Ftr\u002Fjwt-guvenli-mi-guvenlik-acigi-olusturmayin","JWT Güvenli Derken Güvenlik Açığı Oluşturmayın",{"path":731,"title":732},"\u002Ftr\u002Fvue-js-nedir","Vue.js Nedir? Yeni Başlayanlar İçin Rehber",{"path":734,"title":735},"\u002Ftr\u002Fobserver-tasarim-deseni-nedir","Observer Tasarım Deseni Nedir?",{"path":737,"title":738},"\u002Ftr\u002Fes11-nedir-ecmascript-2020-nedir","ES11 Nedir? ECMAScript 2020 Nedir?",{"path":740,"title":741},"\u002Ftr\u002Fflyweight-tasarim-deseni-nedir","Flyweight Tasarım Deseni Nedir?",{"path":743,"title":744},"\u002Ftr\u002Ffull-stack-proje-gelistiriyoruz","Full Stack Proje Geliştiriyoruz",{"path":746,"title":747},"\u002Ftr\u002Fphp-8-0-yenilikler","Merhaba PHP 8: Modern PHP 8.x Çağı",{"path":749,"title":750},"\u002Ftr\u002Fmemento-tasarim-deseni-nedir","Memento Tasarım Deseni Nedir?",{"path":752,"title":753},"\u002Ftr\u002Flitespeed-web-server-performans-artisi","Konfor Alanından Çıkıp, Konforlu Bir VPS'e Geçmek: LiteSpeed Web Server",{"path":755,"title":756},"\u002Ftr\u002Frabbitmq-nedir","RabbitMQ Nedir?",{"path":758,"title":759},"\u002Ftr\u002Fphp-ve-makine-ogrenimi-php-ml-kutuphanesi","PHP ve Makine Öğrenimi: PHP-ML Kütüphanesi ile Pratik Çözümler",{"path":761,"title":762},"\u002Ftr\u002Fphalcon-frameworkun-gelecegi","Phalcon Framework'ün Geleceği: Bir Devrin Sonu",{"path":764,"title":765},"\u002Ftr\u002Fadapter-tasarim-deseni-nedir","Adapter Tasarım Deseni Nedir?",{"path":767,"title":768},"\u002Ftr\u002Fmutable-ve-immutable-kavrami","Mutable ve Immutable Kavramları Nedir?",{"path":770,"title":771},"\u002Ftr\u002Fnostalji-ibibik-online","Nostalji: İbibik Online (1998'den Bir Web Macerası)",{"path":773,"title":774},"\u002Ftr\u002Frestful-api-bilesenleri","RESTful API Bileşenleri",{"path":776,"title":777},"\u002Ftr\u002Fdocker-ve-portainer-kurulumu","Docker ve Portainer Kurulumu",{"path":779,"title":780},"\u002Ftr\u002Fgo-ile-websockets-websocket-upgrader-nedir","Go ile WebSockets: Upgrader Nedir?",{"path":782,"title":783},"\u002Ftr\u002Fopenlitespeed-ve-litespeed-enterprisei-reverse-proxy-olarak-kullanmak","OpenLiteSpeed ve LiteSpeed Enterprise Sunucularını Reverse Proxy Olarak Kullanmak",{"path":785,"title":786},"\u002Ftr\u002Fcomposite-tasarim-deseni-nedir","Composite Tasarım Deseni Nedir?",{"path":788,"title":789},"\u002Ftr\u002Fubuntu-20-04-uzerinde-cyberpanel-kurulumu","Ubuntu 20.04 üzerinde CyberPanel kurulumu",{"path":791,"title":792},"\u002Ftr\u002Fstrategy-tasarim-deseni-nedir","Strategy Tasarım Deseni Nedir?",{"path":794,"title":795},"\u002Ftr\u002Fchain-of-responsibility-deseni-nedir","Chain of Responsibility Deseni Nedir?",{"path":797,"title":798},"\u002Ftr\u002Fgo-veri-tipleri-map","Go Veri Tipleri - Map",{"path":800,"title":801},"\u002Ftr\u002Fdocker-ile-mariadb-kurulumu","Docker ile MariaDB Kurulumu",{"path":803,"title":804},"\u002Ftr\u002Fvue-3-hakkinda-bilmeniz-gerekenler-yenilikler","Vue 3 Hakkında Bilmeniz Gerekenler ve Yenilikler",{"path":806,"title":807},"\u002Ftr\u002Ffactory-method-ve-abstract-factory-farki-nedir","Factory Method ve Abstract Factory Farkı Nedir?",{"path":809,"title":810},"\u002Ftr\u002Fes12-nedir-ecmascript-2021-nedir","ES12 Nedir? ECMAScript 2021 Nedir?",{"path":812,"title":813},"\u002Ftr\u002Fes6-nedir-ecmascript-2015-nedir","ES6 Nedir? ECMAScript 2015 Nedir?",[815,819,820,824],{"path":816,"title":817,"date":818},"\u002Ftr\u002Fphp-generator-ve-iterator-farki","PHP'de Generator ve Iterator Arasındaki Temel Farklar","2026-06-20",{"path":758,"title":759,"date":818},{"path":821,"title":822,"date":823},"\u002Ftr\u002Fearly-return-erken-donus-nedir","Early Return \u002F Erken Dönüş nedir?","2021-09-11",{"path":825,"title":826,"date":827},"\u002Ftr\u002Fprogralama-ipucu-yoda-gosterimi","Yoda Koşulları (Yoda Conditions) Nedir? Programlama İpucu","2021-07-23",[829,831,835],{"path":719,"title":720,"date":830},"2021-02-16",{"path":832,"title":833,"date":834},"\u002Ftr\u002Fjavascriptde-moduller","JavaScript'te Modüller","2020-12-11",{"path":836,"title":837,"date":830},"\u002Ftr\u002Ffull-stack-proje-agaci","Full-Stack Proje Yol Haritası ve İçindekiler",1782141999969]