Yang Baru di Laravel 5.6

Bagus Aji Santoso 8 Februari 2018

Yang Baru di Laravel 5.6

Laravel 5.6 baru saja dirilis sebagai versi mayor framework ini! Rilis yang terbaru membawa banyak fitur dan artikel ini akan membahas fitur-fitur utamanya. Untuk daftar lengkap silahkan hubungi changelog Github.

Logging Improvements

Fitur paling besar yang ada di laravel 5.6 adalah peningkatan logging. Konfigurasinya dipindah dari config/app.php ke config/logging.php.

Kita bisa mengatur sebuah "stacks" yang dapat mengirim pesan log ke beberapa handler. Misalnya, kita bisa mengirim pesan debug ke system log dan mengirim error log ke slack. Baca lebih lanjut tentang logging di sini.

Single Server Task Scheduling

Jika kita memiliki sebuah task scheduler di beberapa server, tiap-tiap task tersebut akan berjalan di servernya masing-masing. Kita bisa mengatur agar task tersebut hanya berjalan di salah satu server saja dengan method onOneServer():

$schedule->command('report:generate')
    ->fridays()
    ->at('17:00')
    ->onOneServer();

Catatan: Kita harus menggunakan memcached atau redis driver agar driver cache bawaan bisa memakai fitur single server task scheduling di Laravel 5.6 ini.

Dynamic Rate Limiting

Laravel 5.6 memperkenalkan dynamic rate limiting yang memberikan fleksibilitas dan memungkinkan kita memberi rate dengan mudah per-user:

Route::middleware('auth:api', 'throttle:rate_limit,1')
    ->group(function () {
        Route::get('/user', function () {
            //
    });
});

Pada contoh di atas, rate_limit adalah atribut dari model App\User untuk menentukan jumlah rikues yang diperbolehkan pada waktu yang diberikan.

Broadcast Channel Classes

Sekarang kita bisa menggunakan channel classes di file routes/channels.php daripada menggunakan closures.

Untuk membuat kelas channel baru, Laravel 5.6 memberikan perintah make:channel:

php artisan make:channel OrderChannel

Lalu kita daftarkan channel tersebut ke routes/channels.php:

use App\Broadcasting\OrderChannel;

Broadcast::channel('order.{order}', OrderChannel::class);

API Controller Generation

Kita sekarang bisa membuat resource controller untuk API yang akan mengabaikan aksi create dan edit yang tidak perlu sehingga hanya berguna untuk membuat resource controller yang mengembalikan HTML. Untuk membuat sebuah resource controller gunakan flag --api:

php artisan make:controller API/PhotoController --api

Eloquent Date Casting

Kita bisa mengkostumisasi format date Eloquent dan casting datetimg secara individu:

protected $casts = [
    'birthday' => 'date:Y-m-d',
    'joined_at' => 'datetime:Y-m-d H:00',
];

Format ini dipakai pada model serialization ke sebuah array atau data JSON.

Blade Component Aliases

Sekarang kita bisa memberikan alias kepada komponen Blade untuk mempermudah akses. Misal, jika kita menyimpan sebuah komponen di resources/views/components/alert.blade.php kita bisa memakai method compoenent() untuk memendekkannya:

Blade::component('components.alert', 'alert');

Lalu kita bisa me-render file blade tadi dengan lias yang sudah dibuat:

@component('alert')
    <p>This is an alert component</p>
@endcomponent

Argon2 Password Hashing

Laravel 5.6 mendukung algoritma hashing baru untuk PHP 7.2+. Kita bisa mengontrol driver hashing mana yang dipakai di file config/hashing.php.

// baca juga

UUID Methods

Dua method baru tersedia di Illuminate\Support\Str untuk membuat Universal Unique Identifiers (UUID):

return (string) Str::uuid();
return (string) Str::orderedUuid();

Method orderedUuid() akan membuat sebuah UUID dengan timstamp untuk mempermudah dan mengefisienkan index di database.

Collision

Collision adalah fitur untuk memberikan pesan error yang enak dilihat langsung di terminal.

Image

Bootstrap 4

Semua scaffolding frontend (kode-kode yang di-generate) dan contoh komponen Vue sekaran gmenggunakan Bootstrap 4.

Upgrade Ke Laravel 5.6

Untuk meng-upgrade pemasangan ke v5.6, ikuti petunjuk upgrade ini.

Sumber: laravel-news