Laravel 5.5 LTS ve Yenilikler Neler ?



5 dakikalık okuma
July 26, 2017

Laravel Topluluğu için bugün büyük gün. Bu satırları yazdığım esnada Amerika, New York’ta Laravel’in Geliştiriciler Konferansı(laracon.us) yapılıyor. (25-26 Temmuz 2017) ve yapımcısı Taylor Otwell Laravel 5.5 LTS sürümünün tanıtımını yaptı. Bu yazımın konusu da Laravel 5.5’de ne tür yenilikler var onlara göz atmak olacak.

İlk önce LTS nedir, bu soruya cevap verelim. (Long Term Support) kelimelerinin kısaltılmışı olan uzun dönem desteği manasındadır. Laravel 5.1’den sonra ikinci kez 5.5 sürümü ile uzun dönem desteklenme kararı alındı. Yaklaşık 2020’ye kadar Laravel 5.5’te güvenlik açıkları, küçük yenilikler, yamalar vs. gibi durumları sürdürecekler.

Açık lisanstan nasıl para kazanılırın en güzel örneklerinden biri bence Laravel’dir.

Laravel bildiğiniz üzere açık kaynak kodlu bir framework olmasına rağmen onu merkeze alarak yine onun için geliştirilmiş bir çok paralı servis vardır. Mesela bizzat yapımcısı Taylor’un geliştirdiği aylık-yıllık abonelik sistemine dayanan Forge. Yine Laravel framework’unu içerisinde hazır birçok yapı barından gelişmiş bir wep-app uygulamasına dönüştüren Spark. Başka bir örnek Laravel kullanılarak geliştirilen veritabansız -flat file- kullanan elit bir CMS olan Statamic. Ve sayamadığım bir çok (SAAS) kategorisinde servis…

Ayrıca Laracon.US adında yapılan Amerika ayaklı geliştiriciler konferansı da bedava değil. Biletleri kara borsada satılıyor. Ve her yıl hepsi tükeniyor. Taylor bu konferansı eş zamanlı olarak internetten canlı yayın olarak da yaptırıyor ve bu da paralı. Bence çok güzel. İnsalar bir cemiyet - kominite- oluşturarak o mahvilde açık lisans projelerden para kazanıyorlar. Tamamen desteklediğim bir durum. İyi de yapıyorlar. Bir şey tamamen de bedava olunca eskilerin dediği gibi kadir kıymeti bilinmiyor.

Uzun bir girişten sonra gelelim Laravel 5.5’teki yeniliklere…

Açık Lisanslı Yeni Servis: Horizon

Horizon Service

Daha önceki sürümlerinde Taylor’un tanıttığı açık lisanslı ve Laravel’den ayrı olarak dağıtılan Cashier, Scout ve Passport gibi 5.5 sürümünde de yeni bir servisin tanıtımını yaptı. Adı: Horizon Bu servis de Laravel 5.5 ‘den bağımsız olarak dağıtılıyor ve bedava.

Bu servisinin amacı Laravel Redis ile oluşturulan “queues”(kuyruğa atılmış sıralı işlemleri) izlemek, yerine getirilmemiş bir emir varsa bunu görmek ve müdahale etmek, sunucuya bindirdiği yoğunluğu gözlemlemek olarak özetleyebilirim.

Horizon-Laravel

Servis, Vue javascript kütüphanesi kullanarak oluşturulmuş son derece sade tasarımlı tek bir “Dashboard“‘dan oluşuyor ve tüm işlemleri bu tek single page dashboard uygulaması ile gözlemliyorsunuz.

Mevcut Laravel 5.5 uygulamanıza bu bedava servisi eklemek için tek yapmanız gereken terminal ile komut satırında:

composer require laravel/horizon

yazmanız yeterlidir.

Bu servisin tüm ayarlarını tek dosyadan:

config/horizon.php

Aşağıdaki resimde görülmek üzere yapabilirsiniz.

Horizon-Config

Tüm kuyruktaki işlerimizi daha önce artisan ile :

php artisan queue:work

diye çalıştırıyorduk. Artık yine tek komut emiri ile şu şekilde çalıştırabiliriz:

php artisan horizon

Bu işlemi de cronjob ile belirli periyodlarda yaptığımızı varsayarsak, alın size stabil, esnek, tek dosyadan ayarlanabilen bir kuyruğa atılmış sıralı işlemleri izleme mekanizması: HORIZON

Yeni “Routing” Alternatifleri:

Laravel 5.5 ile 2 yeni routing alternatif yöntemi eklendi. Eskiler aynen durmakla beraber yeni olarak şunlar geldi:

1.

Route::view('/welcome', 'welcome');

Url’de “welcome” yazılırsa **welcome.blade.php **dosyasını göster manasında. Bu metodda route caching mekanizması ile uyumlu çalışıyor. Route’ları cache’e aldıysanız bu ifade de alınacaktır. O noktada gönlünüz müsterih olsun.

2.

Route::redirect('home', 'dashboard');
// 1. parametre uri, 2. parametre de uri

Bu metod ile örnekte verildiği gibi “home” uri’si girildiğinde bir diğer parametre olarak verilen “dashboard” uri’sine yönlendirme yapıyor. Bence son derece kullanışlı bir metod.

Blade::if

Basit koşullu blade ifadeleri oluşturabilmeye yarayan bir tag. Şöyle:

Blade::if('public', function () { return app()->context()->isPublic(); });

Bu ifade şunu üretecek:

@public / @endpublic

(Renderable Mailable)’lar

Artık rotamızda markdown kullanarak oluşturduğumuz mail şablonlarını önizleme yapabiliriz. Şöyle:

Route::get('preview', function () {
    return MyMailable;
});

Validation Yenilikleri

  1. Artık $this->validate() ile validate edilmiş veri değer olarak geri dönüyor.
  2. “php artisan make:rule” artisan komut satırı ile kendi validation kurallarımızı oluşturabiliyoruz. Oluşturduktan sonrada kurallarımızı validate içinde şöyle kullanıyoruz:
$this->validate([
    'myfield' => [
        'string',
        'required',
        new App\Rules\MyValidationRule
    ]
);

Ek olarak:

  • passes() boolean değer gönderiyor; name ve value alıyor.

  • messages() ile gerektiğinde hata mesajını değer olarak gönderebiliyoruz.

Migrate:fresh

php artisan migrate:refresh adında yeni bir artisan komut satırı geldi. Bununla migration dosyalarımızdaki down metodunu yok sayarak tüm veritabanını silip tekrar migrate dosyalarını oluşturuyor.

console commands Oluşturduğumuzda Otomatik Kernel’e kaydetme

Daha önce php artisan make:command ile bir konsol komut satırı oluşturduğumuzda bunu Console klasöründe bulunan app/Console/Kernel.php içerisindeki commands dizisinde manuel tanıtmak durumundaydık. Bu hadise 5.5 ile otomatiğe bağlanmış. Artık bir make:command ile konsol komutumuzu oluşturursak bunun kaydını Laravel bizim yerimize yapıyor.

Package auto-discovery

Hani Laravel uygulamamıza composer ile yeni bir servis yada birleşen kurduğumuzda bunu config/app.php içerisindeki dizilerde tanımlamamız gerekiyordu ki tüm Laravel uygulamamız boyunca aktif olsun.

Bunu php artisan package:discover ile otomatiğe bağlamışlar. Her bir component kurulduktan sonra bu artisan komutu ile otomatik Laravel tespit edip ekleme yapıyor.

Vereceğim bilgiler şimdilik bunlar. İlerleyen günlerde Laravel 5.5’in bazı özelliklerine detaylı bakış yapabiliriz.


Etiketler: