Beberapa hari yang lalu berita baik datang dari salah satu PHP framework kesukaan penulis yaitu Laravel dengan dirilisnya versi yang paling baru yaitu 5.5
Berita baik tidak sampai di rilis versi terbaru saja tapi versi 5.5 ini adalah versi LTS (Long Term Support) melanjutkan versi LTS sebelumnya yaitu Laravel versi 5.1.
Daftar Isi
Buat kalian yang tidak tahu apa itu LTS, LTS berarti versi ini akan mendapatkan support yang lebih lama yaitu perbaikan bug selama dua tahun, dan perbaikan keamanan selama tiga tahun. Sedangkan pada versi yang bukan LTS seperti versi 5.2 dan 5.3 hanya menerima dukungan perbaikan bug selama 6 bulan, dan perbaikan keamanan selama satu tahun.
Kembali lagi ke topik yang mau kita bahas yaitu apa saja sih yang baru di Laravel versi 5.5 ini? Setelah saya coba install dan baca-baca maka inilah fitur-fitur menarik dari laravel 5.5
1. Whoops Package
Selamat datang lagi buat Whoosp erros! Whoops package ini berfungsi untuk menampilkan pesan saat terjadi error pada kode di dalam aplikasi Laravel. Jika kalian pengguna Laravel di versi 4, maka tentu tidak asing lagi dengan pesan berupa _“Whoops something error” . _Package ini sangat membantu saat terjadi error karena akan menampilakn informasi tentang error tersebut secara lengkap dan detail
2. Collection Dumping
Pernah memakai helper dd() ? Nah sekarang kamu bisa menggunakan helper ini langsung di _object collection_dalam bentuk method ->dd()
. Langsung saja lihat contohnya di bawah ini:
<?php
Song::all()
->filter
->platinum
->dump()
->filter(function ($song) {
return $song->released_on >= CarbonCarbon::parse('-10 years');
})->dd();
3. The Responsable Interface
Maksudnya apa sih Responsable interface? Jadi di laravel 5.5. kamu bisa membuat class response sendiri untuk masing-masing object. Kita lihat aja contohnya agar lebih mudah mengerti.
public function store(Request $request)
{
$data = request()->validate([
'title' => 'required',
'artist' => 'required',
'description' => 'required',
'duration' => 'required|numeric',
'released_on' => 'required|date_format:Y-m-d',
'gold' => 'boolean',
'platinum' => 'boolean',
]);
$song = new Song($data);
$song->save();
return new NewSongResponse($song);
}
Nah bisa dilihat di bagian return new NewSongResponse($song);
agak sedikit berbeda dangan cara biasa kita melakikan return di laravel versi sebelumnya.
Jadi jika kita biasanya langsung memanggil helper response()
, sekarang kita bisa membuat sebuah response class sendiri untuk masing-masing object. Lalu apa isi dari class NewSongResponse
tersebut?
<?php
namespace AppHttpResponses;
use AppSong;
use IlluminateContractsSupportResponsable;
class NewSongResponse implements Responsable
{
/**
* @var AppSong
*/
protected $song;
/**
* @param AppSong $song
*/
public function __construct(Song $song)
{
$this->song = $song;
}
public function toResponse($request)
{
if ($request->wantsJson()) {
return response()
->json($this->song)
->header('Location', route('songs.show', $this->song))
->setStatusCode(201);
}
return redirect()
->route('songs.show', $this->song);
}
}
Bisa kita lihat di bagian toResponse
, Jika request berupa ajax maka otomatis responsenya berupa json, jika request biasa maka akan di return berupa redirect. Dengan adanya Responsible interface maka isi dari controller akan menjadi semakin rapi.
4. Request Validation Method
Jika sebelumnya untuk melakukan validasi di controller kita memanggil method $this->validate()
sekarang bisa langsung melakukan validasi dari request object. Contohnya seperti di bawah ini.
$data = request()->validate([
'title' => 'required',
'artist' => 'required',
'description' => 'required',
'duration' => 'required|numeric',
'released_on' => 'required|date_format:Y-m-d',
'gold' => 'boolean',
'platinum' => 'boolean',
]);
5. Custom Validation Rule Objects and Closures
Fitur selanjutnya ini sangat membantu kita untuk membuat sebuah rule validasi kustom dimana biasanya kita membuat sebuah rule baru dengan mengextend dari class Validator berupa Validator::extend
. Sekarang cara membuat sebuah rule baru menjadi lebih clear, sangat elegant dan mudah. Contoh cara membuat validasi rule baru dapat dilihat di contoh di bawah.
<?php
namespace AppRules;
use IlluminateContractsValidationRule;
class CowbellValidationRule implements Rule
{
public function passes($attribute, $value)
{
return $value > 10;
}
public function message()
{
return ':attribute needs more cowbell!';
}
}
Dari contoh di atas, cara memakai custom validation yang sudah dibuat diatas seperti dibawah ini:
<?php
request()->validate([
'cowbells' => [new CowbellValidationRule],
'more_cowbells' => [function ($attribute, $value, $fail) {
if ($value <= 10) {
$fail(':attribute needs more cowbell!');
}
}]
]);
Selain lewat object, kamu juga bisa langsung membuat custom rule dengan clousure
. Seperti contoh rule more_cowbells
di atas. Clousure ini sangat membantu kita untuk membuat validasi yang simple tanpa harus membuat class dulu atau digunakan untuk membuat prototype custom role sebelum memindahkannya kedalam sebuah class. Fitur yang sangat keren!
6. Blade::if ,Auth dan juga Guest Blade Directives
Di laravel 5.5 diperkenalkan sebuah blade baru yaitu Blade::if yang digunakan untuk menyimplekan fungsi if else di dalam blade template kamu. Cara untuk menambahkan custom blade directive adalah dengan menambahkan beberapa code baru di AppServiceProvider::boot()
method.
use IlluminateSupportFacadesBlade;
Blade::if('admin', function () {
return auth()->check() && auth()->user()->isAdmin();
});
Cara memangilnya akan jadi seperti di bawah ini.
@admin
<a href="{{ route('super.secret') }}">Secret Page</a>
@else
Welcome Guest. <a href="{{ route('login') }}">Login</a>
@endadmin
Keren banget! Eits, tapi ada tambahan lagi yaitu blade Auth dan Guest yang sudah disediakan laravel secara default untuk menghandle apakah si user itu login atau tidak.
Cara menggunakan blade Auth & Guest seperti berikut.
@auth
Welcome {{ user()->name }}!
@endauth
@guest
Welcome Guest!
@endguest
7. Frontend Presets
Fitur selanjutnya yang tidak kalah keren adalah soal frontend presets. Secara default, laravel menyediakan frontend berupa Vue.js. Namun sekarang kamu bisa memilih apakah mau menggunakan vue atau react atau tanpa ada frontend framework di aplikasi kalian.
Caranya adalah dengan memanggil command preset
lewat artisan seperti contoh di bawah ini.
php artisan help preset
Usage:
preset <type>
Arguments:
type The preset type (none, bootstrap, vue, react)
# Use react
$ php artisan preset react
# Clear scaffolding
$ php artisan preset none
8. Automatic Package Discovery
Fitur yang satu ini tidak kalah keren juga teman-teman. Sesuai namanya, fitur ini memberikan kemudahan kita saat menginstall package di dalam aplikasi laravel yang sedang kita buat dengan secara otomatis tanpa harus menambahkan Provider dan Aliias di file app.php. Karena biasanya kita suka lupa kan setelah menginstall package tapi lupa menambahkan Provider dan Aliasnya. Tapi kamu juga bisa mendisable fitur automatic ini untuk beberapa package.
Itulah fitur-fitur terbaru yang ada di dalam Laravel 5.5, Jika kalian mau upgrade versi laravel sebelumnya ke laravel 5.5 wajib baca dulu upgrade guidenya di situs laravel supaya tidak ada error ya. Selamat mencoba laravel 5.5
Referensi :