Soru, görüş ve önerileriniz için;

contact@fatih-karakus.com

Laravel 11 vs Laravel 12: Ne Değişti, Ne Yeni Geldi?

Laravel 11 vs Laravel 12: Ne Değişti, Ne Yeni Geldi?

*"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.

🗓️ Sürüm Zamanlaması ve Destek Politikası: Hangi Sürüm Ne Kadar Dayanır?

 

Öncelikle, Laravel’in sürüm döngüsünü hatırlayalım:

  • **Yıllık major sürüm** (~Şubat-Mart)
  • **Minor ve patch** sürümleri haftalık olarak gelir, **asla breaking change içermez**
  • **Bug fix**: 18 ay
  •  **Security fix**: 2 yıl
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.

🏗️ 1. Uygulama Yapısı: Sadeleştirme mi, Yoksa Yeniden Başlangıç mı?

 

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:

  • Inertia 2 + TypeScript + Tailwind
  • shadcn/ui veya Flux UI gibi modern UI kütüphaneleri
  • Laravel Auth sistemi ile birlikte
  • **WorkOS AuthKit** ile sosyal giriş, passkey, SSO desteği

 Ö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.

🛠️ 2. Geliştirici Deneyimi (DX): Artık Daha Akıllı

 

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.

📊 3. Query Builder: Sorgular Artık Daha Akıllı

 

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**.

🌐 4. API Geliştirme: GraphQL ve Sürüm Yönetimi

 

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.

🔒 5. Güvenlik: `secureValidate()` ile Güçlü Doğrulama

 

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.

 

⚡ 6. Performans: Asenkron Önbellekleme ve Dinamik Kuyruklar

 

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.

🔄 7. Eloquent ve İlişkiler: `withFiltered()` ile Daha Temiz Kod

 

// 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.

 

🧰 8. Diğer Yenilikler: Küçük Değişiklikler, Büyük Etki

 

  • **`compare` kuralı**: `same` kuralının yerine geldi. Daha esnek karşılaştırma sağlar.
  • **Dependency Injection**: PHP 8.2 property promotion ile daha temiz constructor’lar:
  public function __construct(protected UserService $service) {}

 

  • **DevOps Entegrasyonu**: `php artisan deploy:prepare` komutu, deployment sürecini otomatikleştirir (migrate, optimize, clear cache).
  •  **HTTP Client**: Asenkron istekler, retry politikaları ve timeout yönetimi geliştirildi.

🧠 Genel Değerlendirme: Hangi Sürümü Kullanmalıyım?

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.

🚀 Sonuç: Laravel 12, “Yeni Özellikler”den Çok “Daha Akıllı Geliştirme”

 

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ı.

  • 🔄 Laravel 11: “Yapıyı değiştir.”
  • 🔄 Laravel 12: “Yapıyı optimize et, geliştiriciyi güçlendir.”

Eğer Laravel ile ciddi projeler geliştiriyorsanız, **Laravel 12, 2025 ve sonrası için en mantıklı tercih**.