Dün, Laravel 5.4 final sürüm olarak yayınlandı. Bu sürüm, birçok yeni özellik ve iyileştirme getiriyor. Şimdi bu yeniliklere bir göz atalım.

Laravel Dusk

Şimdiye kadar Laravel, uçtan uca (end-to-end) testler yazmak için birçok yardımcı araç içeriyordu. Web tarayıcının davranışını taklit etmek için arkaplanda Symfony BrowserKit bileşenini kullanıyordu. Fakat uygulamanız Ajax ya da Javascript kullanıyorsa BrowserKit yetersiz kalıyordu.

JavaScript kullanan uygulamalar için uçtan uca bir tarayıcı test aracı olan Laravel Dusk, sayfa etkileşim testleri yapmayı kolaylaştırıyor. Onunla yazdığınız testlerde, düğmelere ya da bağlantılara tıklama, formları doldurma, hatta sürükleyip bırakma gibi işlemleri gerçekleştirebilirsiniz.

Dusk, bu testler için arkaplanda ChromeDriver ve Facebook Php-webdriver kullanıyor. Herhangi bir Selenium tarayıcısı ile çalışabilmesine rağmen ChromeDriver ile geldiğinden, JDK ya da Selenium kurmanıza gerek kalmıyor. Taylor Otwell‘in iddiasına göre Dusk testleri Selenium’dan daha hızlı çalışıyor.

Laravel Mix

Laravel Elixir yenilendi ve ismi Laravel Mix olarak değişti. Artık Gulp yerine Webpack kullanılıyor. Plugin ekosistemini de değiştiren bu köklü değişiklik sebebiyle isim değişikline gidildi.

Laravel Mix kısaca, çeşitli CSS ve JavaScript önişleyicilerini kullanarak Laravel uygulamalarımız için Webpack oluşturma adımlarını tanımlamanıza yarayan kolay anlaşılır bir API sunuyor.

Blade Bileşenleri ve Slotlar

Bileşenler ve slotlar, bölümler ve layout’lara benzer özellikler sunuyor. Artısı, daha anlaşılabilir bir yapıda olması. Laravel dökümantasyonundaki örneği ele alacak olursak;


<!-- /resources/views/alert.blade.php -->

<div class="alert alert-danger">
{{ $slot }}
</div>

şeklinde bir uyarı bileşeni oluşturabilir ve aşağıdaki şekilde farklı bir yerde onu kullanabiliriz.


@component('alert')
<strong>Whoops!</strong> Something went wrong!
@endcomponent

Markdown Emails

Laravel 5.3’te, aynı mesajı hem e-posta hem SMS hem de bildirim olarak göndermemizi sağlayan Mailables ve Notifications özellikleri eklenmişti. Laravel 5.4’te ise bunlara ek olarak, e-posta şablonları oluşturmak için yeni bir markdown (bir biçimlendirme tipi)  sistemi geliyor.

Otomatik Facade’ler

Artık istediğiniz bir sınıfı, bir Facade olarak anlık olarak kullanabilirsiniz.

Örneğin;


namespace App;

class Zonda
{
public function zurf()
{
return ‘Zurfing’;
}
}

Router veya controller’ımızda da şu şekilde kullanıyoruz:


use Facades\ {
App\Zonda
};

Route::get('/', function () {
return Zonda::zurf();
});

Route İyileştirmeleri

İsimlendirdiğimiz bir route ya da middleware (ortakatman) tanımlamak için artık daha akıcı bir sözdizimi kullanıyoruz.


Route::name('profile')->get('user/{id}/profile', function ($id) {
// some closure action...
});

Route::name('users.index')->middleware('auth')->get('users', function () {
// some closure action...
});

Route::middleware('auth')->prefix('api')->group(function () {
// register some routes...
});

Route::middleware('auth')->resource('photo', 'PhotoController');

Ayrıca route önbellekleme katmanında yapılan iyileştirmeler, çok sayıda route içeren uygulamalarınızda gözle görülür performans artışı sağlayacak.

Diğer Yeni Özellikler

  • Yeni helper’lar: retry, array_wrap
  • Varsayılan 503 hata sayfası
  • Çekirdekte ::class notasyonuna geçildi
  • Parola sıfırlama route’larına isimlendirme eklendi
  • PhpRedis desteği
  • IPv4 ve IPv6 validasyonları
  • date_format validasyonu artık daha hassas

 

Kaynaklar: