Her Laravel eğitiminde standart olarak şu şekilde başlar: bir kontrolcü oluştur, içine biraz Eloquent yaz, bir görünüm (view) döndür. Bu, bir prototip için uygundur. Ancak gerçek bir uygulamanın ağırlığı altında çöker.
<p>16 yıldan fazla bir süredir üretim sistemleri gönderiyorum — yüz binlerce mesaj işleyen SMS platformlarından kurumsal iş yönetim sistemlerine kadar — her ciddi Laravel projesine uyguladığım belirli bir mimari şemaya ulaştım. Bu tamamen teorik değil. Şu anda <a href="https://klytron.com" target="_blank" rel="noopener noreferrer">klytron.com</a>'da çalışan kesin yapı budur ve bunu müşteri projelerinde de uyguluyorum.</p>
<p>İşte bu şema.</p>
<h2>
<a name="the-problem-with-laravel-default" href="#the-problem-with-laravel-default">
</a>
"Laravel Default" ile İlgili Sorun
</h2>
<p>Varsayılan olarak Laravel aşağıdaki yapıyı sunar:<br/></p>
<div class="highlight js-code-highlight">
<pre class="highlight plaintext"><code>app/├── Http/Controllers/
├── Models/
└── Providers/
<p>Bu bir prototip için uygundur. Ancak 10'dan fazla kontrolcüye ulaştığınızda sorunlarla karşılaşmaya başlarsınız:</p>
<ul>
<li>
<strong>Şişkin kontrolcüler</strong> — iş mantığı, doğrulama, veri dönüşümü ve görünüm hazırlığı tek bir metotta sıkıştırılıyor.</li>
<li>
<strong>Test edilemez kod</strong> — kontrolcünüz doğrudan File::get() veya Cache::remember() çağırdığında, dosya sistemine dokunmadan ünite testi yapamazsınız.</li>
<li>
<strong>Esnek olmayan bağlantılar</strong> — bir veri kaynağını (veritabanı → düz dosya gibi) değiştirmek, kontrolcüleri yeniden yazmayı gerektirir, bir uygulamayı değiştirmek yerine.</li>
</ul>
<p>Çözüm, bir çerçeve problemi değil, bir mimari problemidir.</p>
<h2>
<a name="my-production-directory-structure" href="#my-production-directory-structure">
</a>
Üretim Dizin Yapım
</h2>
<p>Ciddi her Laravel projemde kullandığım yapı:<br/></p>
<div class="highlight js-code-highlight">
<pre class="highlight plaintext"><code>app/├── Http/
│ └── Controllers/ # İnce — hizmetlere doğrudan yönlendirir
│ ├── BlogController.php
│ ├── HomeController.php
│ ├── PageController.php
│ ├── ProjectController.php
│ └── ImageController.php
├── Services/ # İş mantığı burada
│ ├── ContentService.php
│ ├── ContentServiceInterface.php
│ ├── SeoService.php
│ └── PostTransformer.php
├── ViewComposers/ # Görünüm için özel veri hazırlığı
│ └── ThemeComposer.php
└── Models/ # Gerekirse Eloquent modelleri


