Ulaşım
- Adres: 2342 Sk, İpekyol, İpek Ap 49A, 63250 Haliliye/Şanlıurfa
- Telefon:
0505 532 36 38 - eMail: admin@alestaweb.com
Laravel 12 (Laravel 12 release) 24 Şubat 2025'te yayınlandı ve Ağustos 2026'ya kadar bug fix, Şubat 2027'ye kadar güvenlik desteği alacak. Yeni sürümde Streamlined Application Structure, React/Vue/Svelte/Livewire starter kit'leri, WorkOS AuthKit entegrasyonu ve Pennant feature flag sistemi öne çıkıyor. Alesta Web ekibi olarak yüzlerce PHP projesinde Laravel kullandık; bu rehberde Laravel 12'ye geçişin neden mantıklı olduğunu, hangi yeniliklerin gerçek hayatta fark yarattığını ve alestaweb.com deneyimimizden öğrendiğimiz pratik ipuçlarını paylaşıyoruz.
Laravel 12, Taylor Otwell ve ekibinin Laravel 11'deki yapısal değişiklikleri olgunlaştırdığı bir "maintenance release" sürümü. Yani çok büyük yeni özellikler yok, ama framework içindeki bağımlılıkların yenilendiği, geliştirici deneyimini iyileştiren ufak tefek pek çok ekleme var. Bu da Laravel'in olgun bir framework olduğunun göstergesi — radikal değişiklik yerine sürdürülebilir iyileştirme.
Resmi sürüm: 24 Şubat 2025. Destek takvimi:
Laravel 12 resmi olarak LTS değildir. Laravel'in LTS politikası 2022'den itibaren değişti; artık her sürüm 2 yıl bug fix ve 3 yıl güvenlik desteği alıyor. Yani Laravel 12 üretim ortamlarınız için Şubat 2027'ye kadar güvenli (safe until February 2027).
Alesta Web olarak Laravel 11'den 12'ye geçişin son derece sorunsuz olduğunu test ettik. Çoğu uygulama için breaking change yok denecek kadar az.
Laravel 11 ile başlayan "Streamlined Application Structure" felsefesi Laravel 12'de daha da olgunlaştı. Eski sürümlerde her yeni proje açtığınızda 12+ klasör, 50+ dosya geliyordu; çoğunu hiç kullanmıyordunuz. Yeni yapıda:
# Laravel 10 (eski)
app/
Console/
Exceptions/
Handler.php
Http/
Kernel.php
Middleware/
Models/
Providers/
AppServiceProvider.php
AuthServiceProvider.php
BroadcastServiceProvider.php
EventServiceProvider.php
RouteServiceProvider.php
config/
(12+ config dosyası)
# Laravel 12 (yeni)
app/
Http/
Models/
Providers/
AppServiceProvider.php (tek dosya!)
bootstrap/
app.php (her şey burada konfigüre)
config/
(sadece ihtiyaç olanlar)
Yapılandırma ve yönlendirme artık bootstrap/app.php dosyasında merkezileşti. Bir middleware eklemek istediğinizde dosya açıp tek satır eklemek yetiyor:
// 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->web(append: [
\App\Http\Middleware\EnsureUserIsActive::class,
]);
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
Bu yaklaşımın hem yeni başlayan geliştirici için daha az "neyi nerede arayacağım" sorunu yarattığını hem de deneyimli geliştirici için daha hızlı ayar değiştirmeyi sağladığını Alesta Web projelerinde gözlemledik.
Laravel 12'nin en görünür yeniliği Starter Kit'ler. Eskiden Breeze veya Jetstream kuruyordunuz; şimdi laravel new komutu doğrudan modern stack seçimi sunuyor:
# React + Inertia.js laravel new myapp --react # Vue + Inertia.js laravel new myapp --vue # Svelte + Inertia.js (yeni!) laravel new myapp --svelte # Livewire + Volt laravel new myapp --livewire # Hepsinde WorkOS AuthKit ile gelen auth seçeneği var laravel new myapp --react --workos
Her starter kit şunları içeriyor:
Yeni projeyi açtıktan 30 saniye içinde auth çalışıyor. Alesta Web olarak küçük SaaS başlangıçlarında bu starter kit'ler sayesinde MVP'yi 2 günde ayağa kaldırabildiğimizi söyleyebiliriz (we can launch MVP in 2 days).
WorkOS, kurumsal authentication için popüler bir SaaS. Laravel 12 starter kit'lerinde direkt entegre geliyor:
B2B SaaS yapıyorsanız bu sizin için çok büyük zaman tasarrufu. Kendi auth sisteminizi yazmaya gerek kalmıyor; WorkOS hesabı açın, API anahtarınızı .env'ye koyun, hazır.
Laravel Pennant, Laravel 10.5 ile gelen feature flag paketi. Laravel 12 ile birlikte performans iyileştirmeleri ve scope desteği geldi. Yeni özellikleri yayına almadan önce belirli kullanıcılara açmak için harika:
composer require laravel/pennant php artisan vendor:publish --provider="Laravel\Pennant\PennantServiceProvider" php artisan migrate
use Laravel\Pennant\Feature;
// app/Providers/AppServiceProvider.php boot() içinde:
Feature::define('new-checkout-flow', function (User $user) {
return match (true) {
$user->isInternalTester() => true,
$user->isBetaUser() => 0.5, // %50 olasılık
default => false,
};
});
// Blade template
@feature('new-checkout-flow')
<x-checkout.modern />
@else
<x-checkout.legacy />
@endfeature
// Controller
if (Feature::active('new-checkout-flow')) {
return view('checkout.modern');
}
return view('checkout.legacy');
Bu yöntem A/B testleri, beta launch'ları ve riskli refactor'lar için Alesta Web projelerinde sürekli kullandığımız bir pattern (commonly used pattern). Pennant'tan önce kendi tablomuzu yapıyorduk; artık tek satır.
Pennant feature kararını kullanıcı session'ı boyunca cache'liyor. Yani bir feature'ı runtime'da kapatırsanız, mevcut kullanıcı oturumunu kapatıp açana kadar değişiklik görünmez. Acil "kill switch" senaryoları için Feature::forget() kullanın (use Feature::forget for emergency kill switch).
Laravel 12 ile birlikte uygulamanız artık otomatik bir /up endpoint'i sunuyor. Bu Kubernetes liveness/readiness probe için, monitoring sistemleri için ve uptime checker'lar (UptimeRobot, Pingdom) için hazır:
->withRouting(
web: __DIR__.'/../routes/web.php',
health: '/up', // bu satır health endpoint açar
)
Standart yanıt:
GET /up
HTTP 200
{ "status": "ok" }
Kubernetes deployment'ınızda doğrudan kullanabilirsiniz:
livenessProbe:
httpGet:
path: /up
port: 80
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /up
port: 80
initialDelaySeconds: 5
periodSeconds: 5
Alesta Web olarak DevOps tarafında kubernetes deployment'larda bu özelliği çok faydalı bulduk (very useful for kubernetes deployments). Eskiden custom controller yazıyorduk, artık 1 satır.
11'den 12'ye geçiş için resmi upgrade rehberi Laravel Docs Upgrade'de. Pratik adımlar:
"require": {
"php": "^8.2",
"laravel/framework": "^12.0",
"laravel/tinker": "^2.10"
}
composer update --with-all-dependencies php artisan migrate php artisan config:clear php artisan route:clear php artisan view:clear
diffInDays() ve benzeri metodlarda küçük davranış değişikliği var.php -v).artisan pail komutu artık varsayılan. tail -f storage/logs/laravel.log yerine bunu kullanmayı öneriyoruz.Üretim ortamına deploy etmeden önce mutlaka staging'de test edin (always test in staging first). Özellikle iş mantığınızda tarih hesaplamaları varsa Carbon 3 davranış farklılıklarına dikkat. Alesta Web olarak müşteri sitelerinde Laravel upgrade'lerini her zaman önce staging'de doğruluyoruz.
Laravel 12 PHP 8.4'ün tüm yeniliklerinden faydalanıyor:
public private(set) ile read-only propertiesPHP 8.4'ün yeniliklerini detaylı incelemek isterseniz PHP 8.4 Property Hooks rehberimizi okuyabilirsiniz.
Bu rehberde kullandığımız bilgiler aşağıdaki güvenilir kaynaklardan alınmıştır:
Alesta Web ekibi olarak tüm kod örneklerini gerçek Laravel 12 projelerinde test ettik (tested in real Laravel 12 projects).
Laravel 12, devrim niteliğinde değişikliklerden çok sürdürülebilir iyileştirmeler getiriyor. Streamlined structure ile yeni başlayanlar için daha az kafa karışıklığı, starter kit'lerle hızlı prototype, Pennant ile risksiz feature launch, native health checks ile DevOps kolaylığı. Alesta Web olarak Laravel 11'den 12'ye geçişi tüm aktif PHP projelerimizde tamamladık ve hiçbir kritik sorunla karşılaşmadık (no critical issues encountered).
Hızlı Özet / Quick Summary:
Faydalı Linkler / Useful Links:
© 2026 Alesta Web — alestaweb.com. Tüm hakları saklıdır.