laravel-logo

Laravel 5.3 henüz geliştirilme aşamasında, fakat yeni özellikler eklendikçe duyuruluyor. Gelin şimdi Laravel 5.3 ile gelecek özelliklere göz atalım.

Yalnızca Tek Bir Migration’ı Geri Almak

Şimdiye kadar migration rollback ile tüm seriyi geri alabiliyorduk. Bu sürümde artık yalnızca bir migration’ı geri alabileceğiz.

php artisan migrate:rollback --step=1

Blade Foreach Döngüleri

Blade template motorunu kullandığınızda, foreach döngülerinde artık $loop değişkenine erişebileceksiniz. Bu da şuna benzer örnekler yapmamıza yarayacak:

@if($loop->first)
 Do something on the first iteration.
@endif

@if($loop->last)
 Do something on the last iteration.
@endif

Eloquent Collection İyileştirmeleri

Bir Laravel Görevi (Laravel Job) constructor’da değiştirge (argument) olarak bir Eloquent Model aldığında, sadece model tanımlayıcısını serialize eden SerializesModels trait’ini kullanabiliriz. Görev işlendiğinde kuyruklama (queue) sistemi, model örneğini veritabanından otomatik olarak yeniden isteyecektir. Taylor Otwell, bunu Laravel 5.3’te Eloquent Collection’lar ile yapabileceğimizi açıkladı.

Peki verilen modelin ya da collection’ın özelliklerini sadece serialize etmek yerine, model değerlerini veritabanından runtime’da yeniden almanın bize faydası ne? Örnekle anlatmaya çalışalım.

Uygulamamıza her bir kişi kayıt olduğunda RegistrationController‘ımızdan SendWelcomeEmail isimli yeni bir görev oluşturulduğunu varsayalım. Kullanıcıyı bekletmek istemeyiz. Bu yüzden görevi kuyruğa atarız. Sağolsun Laravel, bunu ShouldQueue interface’ini implemente ederek yapmamızı sağlıyor.

Sıkıntı şurada başlıyor.

Senaryo 1: Kullanıcın e-mail adresi zaten elimizde. Görevin constructor’ına kullanıcının e-mail’ini aktarıyoruz.

$user = User::find(1);
dispatch(new SendWelcomeEmail($user->email));

Senaryo 2: Constructor’ımıza User model’in tamamını aktaracağız ve SendWelcomeEmail görevimizde SerializesModels trait’ini kullanacağız.

$user = User::find(1);
dispatch(new SendWelcomeEmail($user));

İmplementasyonlar arasında fark yok sayılır. Fakat şeytan ayrıntıda gizlidir. Biraz daha detaylı bakalım.

Senaryo 1’de kullanıcı kayıt olur ve görev çalışmak üzere kuyruğa gider. Uygulamamız Product Hunt’ta ilk sıralara çıkar ve yüzlerce kişi kayıt olur, kuyruk birikir. Kullanıcı kayıt sırasında e-mail’ini yanlış yazdığını fark eder ve ayarlardan bunu değiştirmeye çalışır. Kuyruk, SendWelcomeEmail’i gönderene kadar, görevle birlikte serialize edilen e-mail artık geçersizdir. Dolayısıyla kullanıcı asla hoşgeldin e-mail’i almayacaktır.

Senaryo 2’de ise SendWelcomeEmail görevi işleneceği anda Laravel, User model’indeki güncel bilgiyi alır. Hoşgeldin e-mail’i ise doğru adrese gönderilir.

Kuyruk Konsol Çıktısı, Gerçek Sınıf İsimlerini Gösterecek Şekilde Değişti

Basit Sayfalandırmayı Özelleştirebilme

Basic Pagination, yani sadece ileri geri gibi temel butonların olduğu sayfalandırmayı artık view’lar ile özelleştirebileceğiz.

First Or Create

firstOrCreate fonksiyonu artık ilave değerler alabilecek. Örneğin:

return User::firstOrCreate(['github_id', $githubUser->id], ['avatar' => $githubUser->avatar]);

Query Builder Artık Collection Dönecek

Şimdiye kadar dizi dönen Query Builder, artık collection dönecek.

Çoklu Migration Path’leri

Artık bir service provider’dan kendi migration path’lerinizi yükleyebilirsiniz.

$this->loadMigrationsFrom('path/to/migrations/folder')

Konuyla ilgili şurada daha fazla bilgi bulabilirsiniz.

Laravel Echo

Laravel Echo, mevcut event broadcasting sistemi üzerine geliştirmeler içeren yeni bir özellik. Laracasts sitesinden detaylı bilgiye ulaşabilirsiniz.

Yenilikler bunlarla sınırlı değil. Çıkış tarihi ise henüz netleşmedi. Laravel 5.3, 28 Haziran’da @LaraconUS etkinliğinde duyurulacak. Güncellemeler için phpdeveloper.gen.tr’yi ziyaret etmeyi unutmayın.

Kaynak: https://laravel-news.com/2016/06/look-whats-coming-laravel-5-3/