Laravel 13, son sürümünde herhangi bir yıkıcı değişiklik veya dikkat çekici bir çerçeve yeniliği sunmadı. Bunun yerine, geliştirici deneyimini geliştiren pratik iyileştirmelerden oluşan bir koleksiyon sundu. Bu iyileştirmeler, uygulamaların sıkça kullandığı alanlarla ilgili: kuyruklar, görev zamanlaması, önbellekleme ve veritabanı göçleri.
Her bir güncelleme kendi başına küçük gibi görünse de, birlikte arka plan işlemlerini ve uygulama operasyonlarını yönetmeyi ve izlemeyi kolaylaştırmaya yönelik net bir odaklanma olduğunu gösteriyor.
1. Bus::bulk() ile Birden Fazla Görev Gönderme
1.
Bus::bulk() ile Birden Fazla Görev GöndermeLaravel uygulamalarında yaygın bir desen, büyük sayıda görevi göndermektir:
foreach ($users as $user) {
dispatch(new ProcessUser($user));
}
Laravel 13 ile birlikte Bus::bulk() tanıtıldı ve böylece bir seferde birden fazla görevi daha şık bir şekilde göndermeye imkan tanıyor:
Bus::bulk(
User::all()
->map(fn ($user) => new ProcessUser($user))
->all()
);
Bus::batch() ile karşılaştırıldığında, bu yaklaşım grup kayıtları oluşturmaz veya ilerleme takibi yapmaz. Bunun yerine, görevleri, içten bir şekilde kuyruk ve bağlantı ile gruplamak için verimlilik odaklı bir gönderim sağlar.
İdeal kullanım durumları şunlardır:
- Toplu bildirimlerin gönderilmesi
- Büyük ölçekli veri içe aktarımları
- Email kampanyaları
- Toplu arka plan işleme görevleri
Sadece görevleri sıraya almanız gerekiyorsa ve grup izlemeye ihtiyacınız yoksa, Bus::bulk() muhtemelen daha iyi bir seçimdir.
2. S3’ü Önbellek Backend’i Olarak Kullanma
2. S3’ü Önbellek Backend’i Olarak Kullanma
Laravel 13, yapılandırılan herhangi bir dosya sistemi diskini, Amazon S3’ü de içerecek şekilde kullanabilen yeni bir depolama tabanlı önbellek sürücüsü tanıttı.
Yapılandırma oldukça basit:
CACHE_DRIVER=storage
CACHE_STORAGE_DISK=s3
Bu, özel bir önbellek altyapısı sürdürmenin istenmeyebileceği bulut yerel ve sunucusuz uygulamalar için ilginç imkanlar sunmaktadır.
Faydaları şunlardır:
- Yönetilecek daha az hizmet
- Sadeleştirilmiş dağıtımlar
- Sunucusuz ortamlarla daha iyi uyumluluk
- Mevcut depolama yapılandırmalarıyla kolay entegrasyon
Redis yüksek performanslı önbellekleme için tercih edilen seçenek olmaya devam etse de, depolama sürücüsü, hızdan daha fazla basitliğin önemli olduğu durumlar için pratik bir alternatif sunmaktadır.
3. Planlanan Görevler için Metadata
3. Planlanan Görevler için Metadata
Planlanan komutları izlemek genellikle özel isimlendirme kuralları gerektirir veya görev kategorilerini tanımlamak için komut dizelerini parse etmeyi gerektirir.
Laravel 13, görev nitelik destekleyerek buna bir çözüm sunuyor:
$schedule->command('reports:generate')
->withAttributes([
'tag' => 'reports',
'priority' => 'high',
]);
Bu nitelikler, zamanlayıcı yaşam döngüsü olayları ve geri çağırmaları sırasında mevcut olmakta, böylelikle daha kolay hale getirmektedir:
- İzleme panelleri
- Kayıt sistemleri
- Alarm araçları
- Operasyonel raporlama
Artık komut adlarını tanımlama için bağımlı kalmak yerine, planlanan görevlere doğrudan yapılandırılmış metadata ekleyebilirsiniz.
4. Koşullu Olay Dinleyici Keşfi
4. Koşullu Olay Dinleyici Keşfi
Laravel’in olay keşif sistemi, artık koşullu kayıt desteği ile bir iyileştirme aldı.
Bu dinleyiciyi düşünün:
class NotifyExternalCrm implements ShouldBeDiscovered, ShouldQueue
{
public static function shouldBeDiscovered(): bool
{
return app()->environment('production');
}
}
Ana avantaj, dinleyicinin koşul false olduğunda hiçbir zaman kayıt edilmemesidir.
handle() metodunun içinde çevre kontrolleri yapmaya kıyasla:
public function handle($event)
{
if (! app()->environment('production')) {
return ;
}
// Olayı işleyin...
}
Yeni yaklaşım, gereksiz dinleyici kaydı ve görev gönderimini baştan önler.
Sonuç olarak, kod daha temiz ve event yönetimi daha verimli hale gelir.
5. Göçlerde Yabancı Anahtar Kontrollerinin Kolaylaştırılması
5. Göçlerde Yabancı Anahtar Kontrollerinin Kolaylaştırılması
Geliştiriciler genellikle, ortamlar arasında tekrar eden şema değişikliklerini önlemek için savunmacı göçler yazarlar.
Laravel 13, yabancı anahtar tespiti için özel bir yardımcı fonksiyon tanıttı:
if (! Schema::hasForeignKey('orders', ['user_id'])) {
// Yabancı anahtar oluştur...
}
Daha önce, geliştiricilerin genellikle şema metadata yöntemlerini kullanarak yabancı anahtar tanımlarını manuel olarak kontrol etmeleri gerekiyordu.
Yeni API, göçleri:
- Daha temiz
- Daha okunabilir
- Bakımı daha kolay
- Daha güvenli bir şekilde tekrar çalıştırılabilir
Son Düşünceler
Son Düşünceler
Laravel 13, en dramatik sürümlerden biri olmayabilir, ancak anlamlı yaşam kalitesi iyileştirmeleri sunmaktadır.
Öne çıkanlar arasında:
-
Bus::bulk()ile hafifçe toplu görev göndermesi - Saklama sürücüsü ile S3 destekli önbellekleme
withAttributes()ile planlayıcı metadata desteği- Koşullu olay dinleyici keşfi
- Yabancı anahtar varlık kontrollerinin basitleştirilmesi
Ana tema oldukça net: Laravel, gereksiz karmaşıklık eklemeden operasyonel araçlara, arka plan işlemeye ve geliştirici verimliliğine yatırım yapmaya devam ediyor.
En son sürüme geçiyorsanız, süreç hala basit:
composer update laravel/framework
php artisan --version
Bu özelliklerden hangisinin projelerinizde en büyük etkiyi yaratacağını düşünüyorsunuz?
Kaynak: Orijinal Makale


