Apa yang Baru di Laravel 8?

Muhammad Rizqy 12 Oktober 2020

Apa yang Baru di Laravel 8?

Hai Coders, pasti sudah pada tahu bahwa Laravel 8 sudah rilis pada 8 September 2020, dan akan terus mengalami perbaikan hingga 6 bulan kedepan sejak tanggal perilisan. Pada Laravel 8 ini banyak fitur dan perubahan baru yang harus kita ketahui.

Oke langsung saja kita kupas satu persatu fitur apa saja yang baru di Laravel 8:

Laravel Jetstream

Laravel Jetstream merupakan Ekosistem baru di Laravel 8, yang digunakan untuk membuat scaffolding menggunakan Tailwind CSS dengan memberikan pilihan design livewire atau inertia, yang berarti ini menggantikan scaffolding bootstrap, vue atau react seperti pada versi sebelumnya.

Model Directory

Pada Laravel 8 model diletakkan pada direktori khusus di App\Models yang sebelumnya berada pada luar direktori App. Meskipun bisa dikatakan bukan perubahan yang benar-benar baru karena sebelumnya Laravel pernah menerapkan perubahan ini.

Model Factory Classes

Pada Laravel 8 model factory sekarang berbasis class, sehingga ada sedikit perbedaan syntax untuk menggunakan model factory.

Dimana versi sebelumnya seperti ini:

factory(User::class, 50)->create();

Menjadi seperti ini:

User::factory()->count(50)->create();

Migration Squashing

Perintah artisan baru schema dump yang digunakan jika kita memiliki file migrasi dengan jumlah yang banyak.

Untuk menjalankan semua migrasi cukup jalan perintah:

php artisan schema:dump

Untuk menghapus semua migrasi gunakan perintah:

php artisan schema:dump --prune

Job Batching

Fitur job batching berguna untuk memudahkan mengeksekusi sekumpulan pekerjaan. Di Laravel 8 fitur bus batching lebih mudah dengan perintah:

Bus::batch()

Improved Rate Limiting

Pada Laravel 8 mengalami peningkatan pada fungsionalitas untuk membatasi request. Dan pembatas tersebut ditentukan menggukan facade RateLimiter.

RateLimiter::for('global', function (Request $request) {
    return Limit::perMinute(1000);
});

Improved Maintenance Mode

Saat dalam mode maintenance kita dapat menggunakan opsi secret untuk menentukan kode rahasia.

php artisan down --secret="koderahasia"

Kita pun dapat mengakses web dengan url:

https://example.com/koderahasia

Pre-Rendering The Maintenance Mode View

Saat mode maintenance kita dapat melakukan pra-render template pilihan kita menggunakan opsi render perintah bawah:

php artisan down --render = "error :: 503"

Closure Dispatch / Chain / Catch Method

Dengan menggunakan metode catch terbaru kita dapat memberikan Closure yang akan dijalankan jika antrian Closure gagal diselesaikan dengan berhasil.

use Throwable;

dispatch(function () use ($podcast) {
    $podcast->publish();
})->catch(function (Throwable $e) {
    // This job has failed...
});

Dynamic Blade Components

Pada Laravel 8 kita dapat menggukan komponen dinamis bawaan Laravel untuk merender komponen berdasarkan nilai waktu proses atau variabel:

<x-dynamic-component :component="$componentName" class="mt-4"/>

Event Listener Improvements

Untuk menggunakan event listener sekarang dapat menggunakan syntax:

Event::listen(function (PodcastProcessed $event) {
    //
});

Time Testing Helpers

Laravel sekarang menyertakan pembantu yang memungkinkan kita memanipulasi waktu saat ini:

public function testTimeCanBeManipulated()
{  
// Travel into the future...  
$this->travel(5)->milliseconds();  
$this->travel(5)->seconds();  
$this->travel(5)->minutes();  
$this->travel(5)->hours();  
$this->travel(5)->days();  
$this->travel(5)->weeks();  
$this->travel(5)->years();  
  
// Travel into the past...  
$this->travel(-5)->hours();  
  
// Travel to an explicit time...  
$this->travelTo(now()->subHours(6));  
  
// Return back to the present time...  
$this->travelBack();  
}

Artisan Serve Imporvements

Mulai sekarang di Laravel 8, jika kita melakukan perubahan pada file .env tidak perlu menjalankan ulang artisan serve

Tailwind Pagination Views

Paginasi Laravel kini secara default menggunakan Tailwind CSS karena hanya default saja, yang artinya untuk tampilan bootstrap juga tetap tersedia.

Jika ingin menggunakan bootstrap tambahkan syntax ini pada AppServiceProvider:

public function boot()  
{  
	Paginator::useBootstrap();  
}

Routing Namespace Updates

Dalam aplikasi Laravel 8.x definisi rute pengontrol harus ditentukan menggunakan sintaks callable PHP standar. Sehingga penulisan route menjadi seperti berikut:

Route::get('/users', [UserController::class, 'index']);

Mungkin cukup itu saja pembaruan dalam Laravel 8 pada saat artikel ini dibuat. Jika ada pembahasan yang kurang lengkap, silahkan menuju link berikut.