Single All 3 Oktober 2019 5 min

Tutorial Laravel 5.8 — Event dengan Automatic Discovery

Bermain dengan fungsi Event di Laravel, buat MVC menjadi less code!

Tutorial Laravel 5.8 — Event dengan Automatic Discovery

Bermain dengan fungsi Event di Laravel, buat MVC menjadi less code!

Image Halo semua, pada kesempatan kali ini gue mau berbagi insight tentang Laravel Event.

Tutorial ini ditujukan bagi level intermediate, kalau kamu newbie dan baru belajar Laravel, apabila anda bingung dengan isi artikel maka kebingungan ditanggung pemenang. Mungkin bagi yang make Laravel udah advanced ngga akan asing sama fitur Event. Nah bagi yang baru pake laravel kemarin sore (hihihi) mungkin akan asing sama fitur event. Nah gue kasitau dulu deh apa itu menurut docs-nya Laravel.

Laravel’s events provide asimple observer implementation, allowing you to subscribe and listen for various events that occur in your application. Event classes are typically stored in theapp/Eventsdirectory, while their listeners are stored inapp/Listeners. Don’t worry if you don’t see these directories in your application, since they will be created for you as you generate events and listeners using Artisan console commands. Baca ngga kalimat yang saya tebelin? Yep, intinya adalah Laravel menyediakan fitur semacam trigger kalau ada suatu aksi berjalan. Sama ibaratkan trigger pada database, bedanya ini ngga on update, on delete dkknya xixixi 😆. Event di Laravel memungkinkan kita mentrigger sebuah event apabila kita telah menjalankan sebuah method di controller. Temen-temen kan tau Laravel itu pattern-nya MVC (Model View Controller). Nah kenapa harus pake event? Oke saya kasih analoginya. Tapi sebelum saya lanjut jangan lupa agan atau kasitau temen agan yang suka belajar ngoding untuk follow, like, komen en sabskreb Medium saya, yuk kita sama-sama buat Medium ini jadi tempat positif berbagi ilmu secara gretong. Kiddy - MediumRead writing from Kiddy on Medium. Which is more difficult, coding or counting? Not both of them, the difficult one is…medium.com Ngga deng saya bercanda aja, sebenernya saya mau kasitau satu hal dulu kalau fungsi ini hanya berjalan di Laravel versi ≥ 5.8.9, kenapa gitu? Jangan tanya saya, saya mah maba alias mahasiswa baru, tanya aja docs Laravel kenapa gitu.

Image Lalu apa bedanya gan sama versi sebelumnya? Sebenernya yang bikin beda adalah method event discovery-nya gan.

Image Pada versi sebelum 5.8.9, semua event masih diregistrasi secara manual. Coba bayangkan kalo agan ada 100 evenr? Gempor dah tuh tangan, ntar bukannya ngoding, eh malah rebahan hahaha, siapa tuh? Jelas saya hehe. Pada kasus koding kali ini akan membuat hal sederhana. Yaitu setelah menginput produk kita akan menulis Log singkat. Ya sebenernya kalo dalam kasus nyata sih akan lebih panjang, cuma saja kan ini belajar, jadi jangan minta lebih yak 😝 Tapi sebelumnya mungkin agan-agan masih bingung kenapa harus pake event sih? Oke jadi gini, mungkin kalo cuma nulis Log singkat agan akan membuat seperti ini.

Image Bener ngga? Tapi coba sekarang agan bayangkan kalo agan harus membuat sejumlah algoritma mulai dari mengirimkan notifikasi berupa email, mungkin juga menulis log offline ke file, lalu merubah data di table transaksi, atau membuat log yang diinput kedalam database, atau harus mengubah berbagai banyak data setelah satu produk dimasukkan. Bisa dibayangkan akan memakan berapa banyak baris code didalamnya? Mungkin satu method store saja bisa ≥ 80 baris kode. Gimana kalo kita normalisasi codenya? Jadi yang agan buat cukup berdasarkan event atau kejadian saja, misalnya event setelah produk dibuat dan setelah user melakukan pendaftaran tentu saja berbeda kan? Inilah gunanya event! > Pada tutorial ini saya menggunakan Laravel 6.0. Kalau kalian menggunakan 5.8 ngga apa, pastiin aja pokoknya versi Laravel kalian ≥ 5.8.9. Oke sekarang karena udah tau kegunaannya, silahkan buat projek baru aja, atau kalo mau make projek yang udah ada pastiin Laravel versinya ≥ 5.8.9 ya!

Bagi yang menggunakan projek lama dan malas mengikuti dasarnya ya di skip aja dulu sampai saya kasitau untuk lanjut ya. Sekarang saya sarankan membuat model sederhana bernama Product.

php artisan make:model Product -m

Nah kalo sudah kan akan muncul tuh migration baru, isi saja seperti ini.

<?phpuse Illuminate\Database\Migrations\Migration;use Illuminate\Database\Schema\Blueprint;use Illuminate\Support\Facades\Schema;class CreateProductsTable extends Migration