Menilik Fitur Baru Laravel 8
Laravel adalah salah satu framework PHP paling populer saat ini. Framework laravel memiliki konsep MVC yang akan memecah source code sesuai fungsi masing-masing. Pada awal bulan lalu, tepatnya pada 8 September 2020 Laravel merilis versi terbarunya, Laravel 8. Namun, versi ini bukanlah versi LTS (Long Term Support). Developer akan terus mengembangkan dan memperbaiki bugsnya selama satu tahun mendatang. Nah, TAS Official akan mengajak kalian untuk menilik fitur baru Laravel 8. Apa saja?
DAFTAR ISI
Laravel Jetstream dan Laravel Fortify
Laravel Jetstream adalah suat kerangka scafolding yang akan membantu kita dalam penyediaan fitur-fitur umum yang sering digunakan. Beberapa fitur bawaan ini meliputi :
- Authentication (login, dashboard, logout, password reset)
- Two factor authentication (fitur ini menarik, seperti Google Authenticator)
- Browser session management
- API token management (Menggunakan Laravel Sanctum dan adanya hak akses)
- Full “teams” functionality (user bisa membuat team, undang user ke team, dll)
- User profile
- Delete account functionality
Lebih lanjut, fitur terbaru ini akan menggantikan Laravel UI pada versi terdahulunya.
Direktori app/Models
Pada Laravel 8, secara default model akan berada pada folder app/Models. Kita dapat melihatnya secara langsung pada Github Branch master. Hal ini karena tingginya permintaan dari komunitas. Jika kita sudah upgrade ke laravel 8 maka perintah php artisan make:model akan membuat model baru pada app/Models
Job Batching
Fitur menarik lainnya dari Laravel 8 adalah Job Batching. Melalui fitur ini developer dapat mengeksekusi banyak jobs kemudian memanggilnya dengan perintah callback ketika selesai. Contoh enggunaan bus::batch adalah sebagai berikut
use App\Jobs\ProcessPodcast;
use App\Podcast;
use Illuminate\Bus\Batch;
use Illuminate\Support\Facades\Batch;
use Throwable;
$batch = Bus::batch([
new ProcessPodcast(Podcast::find(1)),
new ProcessPodcast(Podcast::find(2)),
new ProcessPodcast(Podcast::find(3)),
new ProcessPodcast(Podcast::find(4)),
new ProcessPodcast(Podcast::find(5)),
])->then(function (Batch $batch) {
// All jobs completed successfully...
})->catch(function (Batch $batch, Throwable $e) {
// First batch job failure detected...
})->finally(function (Batch $batch) {
// The batch has finished executing...
})->dispatch();
return $batch->id;
Migration Squashing
Perintah ini berfungsi untuk menyatukan file-file migration dalam satu file SQL. Fitur ini mendukung dua database management system besar yakni MySQL dan PostgreSQL. Perintah untuk melakukan migration squashing adalah sebagai berikut:
$ php artisan schema:dump
Perintah ini dapat sekaligus melakukan dump dan menghapus file migration dengan menambah parameter prune
$ php artisan schema:dump --prune
File hasil squash akan tersimpan dalam app/schema
Model Factory
Laravel melakukan banyak peningkatan pada model factory. Model Factory pada versi ini memberikan dukungan penuh pada relationship pada model kelas. Salah satu contoh penggunaannya adalah sebagai berikut:
<?php
namespace Database\Factories;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
class UserFactory extends Factory
{
protected $model = User::class;
public function definition()
{
return [
'name' => $this->faker->name,
'email' => $this->faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
'remember_token' => Str::random(10),
];
}
}
Model ini menambahkan trait hasFactory, sehingga kita dapat menggunakan perintah berikut ini pada model Factory :
<?php
use App\Models\User;
User::factory()->count(50)->create();
Maintenance Mode Yang Lebih Baik
Pada versi terdahulu, artisan-down dapat dilewatkan dengan perintah allow-list. Perintah allow-list ini dapat mendaftarkan alamat IP-Addres komputer untuk mengakses selama mode maintenance. Sedangkan pada Laravel 8 perintah ini diganti dengan token.
$ php artisan down --secret="1630542a-246b-4b66-afa1-dd72a4c43515"
Untuk mengaksesnya, kita harus melewatkannya pada URL setelah domain utama. Misal
https://teknosejahtera.co.id/1630542a-246b-4b66-afa1-dd72a4c43515
Selain itu juga menambahkan perlakuan khusus agar segera menampilkan halaman ketika maintenance mode. Hal ini memungkinkan untuk developer melakukan update melalui composer dan pengguna langsung dapat melihat hasil update ini (pre-render). Perintah untuk melakukan pre-render adalah
$ php artisan down --render="errors::503"
Rate Limiting
Pada Laravel 8, Rate Limiting dapat dilakukan melalui facade. Perintah untuk melakukan Rate Limiting adalah sebagai berikut
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Support\Facades\RateLimiter;
RateLimiter::for('global', function (Request $request) {
return Limit::perMinute(1000);
});
Untuk memanggil Rate Limiting dapat dilakukan menggunakan Middleware Throtle
Route::get('/login')->middleware(['throttle:authentication']);
Time Testing Helpers
Fitur Time Testing Helper akan memudahkan kita dalam melakukan pengolahan waktu saat unit testing. Bahasa ini mendukung modifikasi waktu dengan perintah travel.
/ 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();
Wah, kaya time travelers ya!
Peningkatan Artisan Serve
Laravel 8 secara otomatis akan mendeteksi konfigurasi environment tanpa harus melakukan restart pada php artisan serve
Nah, setelah menilik fitur baru laravel 8, apakah kalian tertarik mencobanya?