Laravel'le on iki yıl: bir framework'le büyümek
2014'ten 2026'ya Laravel ile geçirilen on iki yıl: bir araçla birlikte olgunlaşmanın, onu aşmanın ve yeniden benimsemenin hikâyesi.
2014 yılında Laravel 4 ile tanıştığımda framework (çerçeve) kullanmak benim için gerçek bir geçiş anlamına geliyordu. Ham PHP yazıyordum, dosyaları include ile birbirine bağlıyordum ve veritabanı işlemlerini elle yazılmış SQL sorguları yönetiyordu. Laravel’in ilk benim üzerimde bıraktığı etki, her şeyin bir yeri olduğunu hissetmesiydi. Route, controller, model, view — herkes yerindeydi ve bir arada çalışıyordu.
On iki yıl sonra Laravel hâlâ kullanıyorum. Bu süre içinde framework de değişti, ben de. İlişkiyi geriye dönüp değerlendirirken ilginç bir örüntü görüyorum: olgunlaşma birlikte gerçekleşti.
İlk dönem: framework’ün bize öğrettikleri
Laravel 4 ve 5 döneminde framework bana çok şey öğretti. Eloquent ORM, middleware, service provider, event ve listener — bunların hepsi soyut kavramlardı ama Laravel bunları somut, elle tutulur bir şekilde sunuyordu.
O dönemde framework’ün kısıtlarına da çarptım. Büyük controller sınıfları, her şeyin Eloquent modeline dolduğu şişik modeller, app/Http/Controllers klasöründeki kaos. Bunlar framework’ün değil benim hatalarımdı, ama Laravel’in düzeni aynı zamanda bu hatalara da yol açıyordu — kolaylık bazen tembelliği getiriyor.
Orta dönem: framework’ü anlamak
Senior dönemimde Laravel ile ilişkim değişti. Artık Laravel’i kullanmak değil, Laravel’i anlamak istiyordum. Service container nasıl çalışıyor? Eloquent’in lazy loading mekanizması tam olarak ne yapıyor? Middleware pipeline nasıl akıyor?
Bu soruları sormak, framework’ü daha iyi kullanmamı sağladı ama aynı zamanda sınırlarını da net görmemi. Bazı şeyler Laravel’de gereksiz yere karmaşık ya da gereksiz yere sihirli. Magic özellikler hızlı prototip için güzel, ama büyük bir codebase içinde nereye bakacağını bilmek zorlaşabiliyor.
Bu dönemde action class ve form request gibi yaklaşımları framework’ün önerdiği kalıpların dışında tercih etmeye başladım. Composer ile gelen topluluk paketlerini daha seçici değerlendiriyordum. Laravel’in her sunduğunu kullanmak zorunda olmadığımı kavradım.
Son dönem: araçla barışmak
Staff seviyesine geldiğimde Laravel ile ilişkim üçüncü bir aşamaya geçti: barışmak. Bir framework’ün her tasarım kararını beğenmek zorunda değilsiniz. Bazı şeyleri beğenmeyebilirsiniz, bazı tasarım seçimlerini farklı yapardınız diyebilirsiniz — ama yine de o araçla çalışabilirsiniz.
Laravel 10 ve 11 ile gelen değişikliklere bu bakış açısıyla yaklaştım. Type declaration’ların daha sıkı uygulanması, skeleton’ı inceltme çabası, Pulse ve Reverb gibi eklemelerin sınırlarını öngörebilmek — bunlar artık “bu harika mı, berbat mı?” sorusundan çıkıp “bu benim probleme uyuyor mu?” sorusuna dönüştü.
<?php
// Laravel 11 ile gelen ince iskelet; bootstrap/app.php'de middleware ve route tanımı
use Illuminate\Foundation\Application;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
api: __DIR__.'/../routes/api.php',
)
->withMiddleware(function ($middleware) {
$middleware->api(append: [
\App\Http\Middleware\EnsureTokenIsValid::class,
]);
})
->create();
Bu kod üç yıl önce Laravel’de yoktu. İskelet inceldikçe yapılandırma daha açık hale geliyor; sihir azalıyor. Bu benim beğendiğim bir yön.
Bir araçla büyümenin anlamı
Bence bir araçla uzun süre birlikte kalmak, onu körce benimsemek değil. Aynı zamanda ona belirli beklentilerle yaklaşmayı da bırakmak. Framework bir araçtır; problemi olan benim, çözüm üreten benim. Framework sadece o çözümü ifade etmek için bir platform.
On iki yılda Laravel’i birden çok kez hayal kırıklığına uğrattım ve o da beni. Her büyük sürüm atlamasında migration sancısı oldu. Her yeni özelliğin bir öğrenme maliyeti vardı. Ama toplamda bu araç benim kariyerimin önemli bir bölümünü taşıdı.
Farklı diller ve framework’ler denedim. Go, Python, React, Vue — bunların hepsini kullandım ve hepsinden bir şeyler aldım. Ama bir PHP geliştiricisi olarak Laravel benim için birincil araç kalmaya devam etti. Bunun nedeni, on iki yıl boyunca ekosistemi de, dili de, topluluğu da birlikte olgunlaşmış olması. O olgunluk birikmeli ve değerlidir.
Yeni bir projeye başlarken Laravel seçimini hâlâ düşünmeden verdiğim seçimler arasında değil; her seferinde kısa bir değerlendirme yapıyorum. Ama çoğu zaman o değerlendirme yine Laravel’e işaret ediyor. On iki yıl bu sebeple makul bir ağırlık taşıyor.