Apa saja yang baru di Laravel 9?
Bulan februari kemarin, seiring dengan diadakannya acara laracon online yang diselenggarakan secara gratis di youtube, Taylor Otwell beserta timnya merilis laravel versi 9. Laravel versi 9 ini sebelumnya digadang — gadang akan menjadi versi LTS (Long Time Support) baru dari laravel, namun di websitenya sendiri untuk versi 9 ini belum tertera tag LTS pada version list-nya, berbeda dengan versi LTS sebelumnya (Laravel 6), kita tunggu info kedepannya saja untuk versi LTS ini. Laravel 9 ini juga adalah lanjutan pengembangan dari laravel versi sebelumnya yaitu versi 8, nah memang apa saja sih yang baru di laravel 9 ini? mari kita bahas satu persatu.
- Menggunakan PHP versi 8
Pada versi sebelumnya, laravel membutuhkan PHP versi 7.3 keatas untuk bisa diintall atau dipakai, nah untuk laravel versi 9 ini kita membutuhkan minimal PHP versi 8 keatas.
2. Filesystem versi 3.x
Laravel meng-upgrade library filesystem mereka ke versi 3.x, library ini disupport oleh Dries Vints.
3. Eloquent Accessors dan Mutators yang Diimprove
Pada versi 9 ini, laravel menambahkan cara lain untuk mendefinisikan eloquent accessors dan mutators, jika sebelumnya untuk mendifinisikan accessors dan mutators adalah seperti ini:
public function getNameAttribute($value){return strtoupper($value);}public function setNameAttribute($value){$this->attributes['name'] = $value;}
Jika kita menggunakan cara yang di atas untuk set accessors dan mutators kita harus membuat 2 fungsi yang berbeda (getNameAttribute dan setNameAttribute), nah beda dengan cara yang baru seperti dibawah ini:
use Illuminate\Database\Eloquent\Casts\Attribute;public function name(): Attribute{return new Attribute(get: fn ($value) => strtoupper($value),set: fn ($value) => $value,);}
Pada cara yang baru ditambahkan ini kita hanya perlu membuat dengan 1 fungsi, dimana nama dari fungsinya adalah nama yang akan diakses dan isinya adalah me-return class Attribute dengan parameter pertama untuk get (Accessors) dan parameter kedua untuk set (Mutators), dan kita tidak harus mengisi set dan getnya, jadi jika kita hanya butuh accessorsnya saja, maka hanya get saja yang dimasukan kedalam class Attribute dan jika kamu hanya butuh mutatorsnya saja, maka hanya set saya yang dimasukan.
4. Controller Route Groups
Tim laravel meng-improve route groups menjadi lebih spesifik, yaitu dengan menargetkan spesifik controllers untuk route groups, contohnya seperti dibawah ini:
use App\Http\Controllers\OrderController;Route::controller(OrderController::class)->group(function () {Route::get('/orders/{id}', 'show');Route::post('/orders', 'store');});
Pada contoh di atas artinya memiliki group routes yang ditargetkan khusus untuk OrderController, dan untuk di dalam groupnya kita tidak perlu mendefinisikan lagi controllernya, hanya memasukan fungsinya saja.
5. Full Text Indexes dan Where Clauses
Penambahan fungsi baru pada migration yaitu fungsi fullText(), fungsi ini digunakan jika kita menggunakan MySQL atau PostgreSQL sebagai database servernya, berikut contoh pemakaiannya:
$table->text('bio')->fullText();
Makna diatas berarti kita memberikan index full text ke kolom bio. Selain menambahkan fungsi fullText pada migration, laravel juga menambahkan fungsi whereFullText pada query builder, contoh penggunaannya seperti berikut:
$users = DB::table('users')->whereFullText('bio', 'web developer')->get();
Arti kodingan diatas adalah melakukan matching dari field “bio” dengan text “web developer”, artinya jika ada data di dalam field bio yang mengandung kata “web” atau “developer” maka data tersebut akan diambil.
6. Checked / Selected Blade Directives
Laravel menambahkan checked pada template bladenya, dimana yang berfungsi untuk memberikan property checked pada suatu elemen, biasanya input jika nilai yang dimasukan ke dalam parameter bernilai true, berikut contohnya:
<input type="checkbox"name="active"value="active"@checked(old('active', $user->active)) />
Contoh di atas berarti jika isi dari $user->active bernilai true, maka akan me-return nilai / properti checked.
7. Tampilan Error Exception yang Baru
Tampilan error yang baru ini dibuat sebagai open-source oleh spatie.
8. Tampilan route:list yang baru
Tampilan yang baru ini dibuat oleh Nuno Maduro dengan tujuan untuk membuat tampilannya lebih enak dilihat dan dibaca dibandingkan dengan yang sebelumnya.
9. Penambahan Global Helper str()
Laravel menambahkan global helper str(), yang dimana untuk membuat instance baru dari class “Illuminate\Support\Stringable” atau helper ini sama dengan class helper Str::of().
10. Penambahan Global Helper to_route()
Helper ini berfungsi untuk me-redirect ke spesifik nama route, dengan parameter antara lain:
a. Nama route
b. Parameter
c. Status Code
d. Headers
return to_route('users.show', ['user' => 1]);
Contoh di atas berarti me-redirect ke route yang bernama “users.show” dengan parameter user bernilai 1.
Demikian yang bisa saya sebutkan beberapa hal yang baru pada laravel versi 9 ini, sebenarnya masih banyak hal lain yang baru di versi 9 ini, silahkan temen-temen bisa baca langsung pada release notesnya web official laravel, stay curious 🧐 .