*"Laravel 11 yeni yapıyı kurduysa, Laravel 12 onun üzerine daha akıllı bir kat inşa etti."*
Laravel, her yılın başında yayınladığı yeni major sürümle birlikte geliştirici ekosistemini yeniden şekillendiriyor. 2024’te **Laravel 11** ile köklü bir dönüşüm yaşadık. 2025’te ise **Laravel 12** ile bu dönüşümü optimize edip, geliştirici deneyimini zirveye taşıyoruz.
Peki bu iki sürüm arasındaki farklar neler? Hangi sürüm neyi değiştiriyor? Gerçekten yeni bir şey mi var, yoksa sadece bakım mı yapılıyor?
Bu yazıda, Laravel 11 ile Laravel 12 arasındaki farkları, yenilikleri ve hangi projede hangisinin tercih edilmesi gerektiğini örneklerle birlikte inceleyeceğiz.
Öncelikle, Laravel’in sürüm döngüsünü hatırlayalım:
Sürüm | Yayın Tarihi | Minimum PHP | Son Bug Fix | Son Güvenlik Fix |
11 | 12 Mart 2024 | 8.2 | 3 Eylül 2025 | 12 Mart 2026 |
12 | 24 Şubat 2025 | 8.2 | 13 Ağustos 2026 | 24 Şubat 2027 |
👉 **Not:** Laravel 12, Laravel 11’in üzerine inşa edilmiş bir "maintenance release" olarak tanımlanıyor. Yani büyük bir devrim değil, **evrim**. Ama bu, onu önemsiz kılmaz.
Laravel 11: “Yapıyı Sıfırla” Anlayışı
Laravel 11, yeni projeler için **streamlined application structure** (sadeleştirilmiş yapı) getirdi. Artık `app/Http/Kernel.php` ve `app/Console/Kernel.php` gibi dosyalar yok. Bunun yerine her şey `bootstrap/app.php` dosyasında toplandı.
// bootstrap/app.php
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
$middleware->validateCsrfTokens(except: ['stripe/*']);
})
->create();
Bu yapı, özellikle yeni başlayanlar için daha az dosya, daha az kafa karışıklığı anlamına geliyor.
Laravel 12: “Yeni Başlangıç, Yeni Seçenekler”
Laravel 12, yeni projeler için **React, Vue ve Livewire** tabanlı starter kit’ler sunuyor. Bu starter kit’ler:
Örnek: `php artisan install:react` komutuyla, React + Inertia + TypeScript + Tailwind + Auth kurulumunu tek seferde yapabilirsiniz.
Artık Laravel Breeze ve Jetstream güncellenmeyecek. Bu yeni starter kit’ler onların yerini alıyor.
Laravel 11: Artisan Komutları ile Hız Kazanma
Laravel 11, geliştirici üretkenliğini artırmak için yeni Artisan komutları tanıttı:
php artisan make:class User
php artisan make:enum Status
php artisan make:interface Payable
Bu komutlar, boilerplate kod yazımını ciddi oranda azalttı.
Laravel 12: AI Destekli Geliştirme Dönemi Başladı
Laravel 12, geliştirici deneyimini bir adım öteye taşıyor. Artık sadece kod üretmekle kalmıyor, **kodun ne zaman hata yapacağını bile tahmin ediyor**.
✅ `debug()` ile AI Yardımcı
Eskiden `dd()` ile değişkenleri dökerdik. Artık:
debug($user)->suggest();
Bu komut, `$user` nesnesindeki olası hataları analiz edip, IDE tarzı öneriler sunar. Örneğin:
“`$user->email` null olabilir, null check yapmayı unutmayın.”
Bu özellik, özellikle büyük ekiplerde kod kalitesini korumak için çok değerli.
✅ Yeni `scaffold` Komutu
Daha önce bir model oluşturmak için şunu yazardık:
php artisan make:model Product -mcr
Laravel 12’de artık:
php artisan scaffold Product
Bu tek komut, **model, migration, controller, factory, test** ve **resource** dosyalarını otomatik oluşturur.
Laravel 11: Geleneksel Yaklaşım
Karmaşık sorgularda iç içe closure kullanırdık:
User::where('active', true)
->where(function ($q) {
$q->where('age', '>', 25)
->orWhere('city', 'Istanbul');
})
->get();
Kod uzadıkça okunması zorlaşıyordu.
Laravel 12: `nestedWhere()` ile Sadeleştirme
User::where('active', true)
->nestedWhere('age', '>', 25, 'or', 'city', 'Istanbul')
->get();
Bu, sadece yazımı kolaylaştırmakla kalmıyor, aynı zamanda **query builder’ın performansını da artırıyor**.
Laravel 11: Reverb ile Gerçek Zamanlı Devrim
Laravel 11, **Laravel Reverb** ile kendi WebSocket sunucusunu tanıttı. Artık Pusher’a bağımlı kalmadan, gerçek zamanlı uygulamalar geliştirebiliyorsunuz.
php artisan reverb:start
Laravel 12: API’ler Artık Daha Akıllı
✅ Yerleşik GraphQL Desteği
Artık REST API’lerin yerini yavaş yavaş GraphQL alıyor. Laravel 12, bunu doğrudan destekliyor:
// routes/graphql.php
Route::get('/graphql', function () {
return GraphQL::execute($request);
});
✅ API Sürüm Yönetimi
API sürümlerini manuel olarak `/api/v1/users` şeklinde yönetmek artık tarihe karışıyor:
Route::apiVersion(1)->group(function () {
Route::get('/users', [UserController::class, 'index']);
});
Bu yapı, route dosyalarınızı temiz tutar, sürüm geçişlerini kolaylaştırır.
Parola doğrulaması her zaman hassas bir konu. Laravel 12, `secureValidate()` ile bu süreci otomatikleştiriyor:
$request->secureValidate([
'password' => ['required', 'min:8', 'strong']
]);
Bu, sadece uzunluğu değil, **parolanın zayıf olup olmadığını**, **sözlük saldırısına açık olup olmadığını** da kontrol eder.
💡 `strong` kuralı, Laravel’in kendi güvenlik politikalarına göre parolayı değerlendirir.
Laravel 12’de Yeni Cacheler
// Laravel 11
$user = Cache::remember('user_'.$id, 600, fn() => User::find($id));
// Laravel 12
$user = Cache::asyncRemember('user_'.$id, 600, fn() => User::find($id));
`asyncRemember`, cache yazma işlemini arka planda yapar. Bu, özellikle yüksek trafiğe sahip API’lerde **response time’ı ciddi oranda düşürür**.
Dinamik Kuyruk Önceliklendirme
// Laravel 11
ProcessOrder::dispatch($order)->onQueue('high');
// Laravel 12
ProcessOrder::dispatch($order)->prioritize('high');
`prioritize()` metodu, kuyruk sistemini daha akıllı hale getirir. İşlem yoğunluğuna göre otomatik olarak öncelikleri ayarlayabilir.
// Laravel 11
User::with(['posts' => fn($q) => $q->where('status', 'published')])->get();
// Laravel 12
User::withFiltered('posts', ['status' => 'published'])->get();
Bu, özellikle dashboard ve raporlama projelerinde sıklıkla kullanılan bir kalıp. Artık daha temiz ve okunabilir.
public function __construct(protected UserService $service) {}
Kriter | Laravel 11 | Laravel 12 |
Yeni Proje | ✅ (Basit yapı) | ✅✅ (Modern starter kit'ler) |
Mevcut Proje | ✅ (Stabil, çok kullanılıyor) | 🔄 (Upgrade kolay) |
Gerçek Zamanlı | ✅ (Reverb) | ✅✅ (Reverb + iyileştirmeler) |
API Geliştirme | İyi | Mükemmel (GraphQL + API versioning) |
Geliştirici Deneyimi | İyi | Mükemmel (AI debug, scaffold) |
🔹 Laravel 11’e Ne Zaman Başvurmalıyım?
- Mevcut projeniz Laravel 10 veya daha eskiyse, önce Laravel 11’e geçin.
- Reverb ile gerçek zamanlı uygulama kurmak istiyorsanız.
- Daha sade, stabil bir yapı istiyorsanız.
🔹 Laravel 12’yi Ne Zaman Seçmelisiniz?
- Yeni bir proje başlatıyorsanız.
- Modern frontend (React/Vue) kullanacaksanız.
- API odaklı bir uygulama yapıyorsanız.
- Geliştirici deneyimi ve otomasyon sizin için çok önemliyse.
Laravel 12, aslında çok yeni bir şey sunmuyor gibi görünebilir. Ama bu, **bilinçli bir tercih**. Laravel ekibi, bu sürümde “daha fazla özellik” yerine “daha akıllı, daha hızlı, daha güvenli geliştirme” odaklandı.
Eğer Laravel ile ciddi projeler geliştiriyorsanız, **Laravel 12, 2025 ve sonrası için en mantıklı tercih**.