Langsung ke konten utama

Memahami Event & Listener Laravel untuk Arsitektur Kode Bersih

Pendahuluan

Bayangin lagi ngerjain fitur sederhana, tapi lama-lama controller kamu jadi 'gemuk' banget gara-gara harus ngirim email, nge-update log, sampai ngirim notifikasi ke Slack secara bersamaan. Rasanya kayak nimbun sampah di satu tempat, susah dibaca dan bikin maintenance jadi mimpi buruk. Di sinilah Laravel Event & Listener datang sebagai penyelamat biar logic kamu nggak tumpang tindih.

Tips & Best Practices

Di banyak project, biasanya saya mulai dari memisahkan logic yang nggak krusial untuk response user ke dalam listener agar proses loading terasa jauh lebih instan. Saya juga selalu membiasakan diri buat memberi nama event yang merepresentasikan aksi, bukan teknis, misalnya UserRegistered lebih baik daripada SendWelcomeEmail. Terakhir, saya sering pakai ShouldQueue di listener supaya proses berat kayak integrasi pihak ketiga nggak bikin user nunggu lama di depan layar.

Contoh Kode

Misalnya kita mau ngirim email pas user daftar, daripada naruh Mail::to(...) di Controller, mending kita lempar event:

// Di Controller
event(new UserRegistered($user));

// Di Listener
public function handle(UserRegistered $event) {
    Mail::to($event->user)->send(new WelcomeEmail());
}

Dengan cara ini, Controller cuma fokus terima input dan return response, urusan 'ikutan' setelah itu biarkan Listener yang handle.

Variasi Implementasi

Ada dua jalur yang biasa saya tempuh. Pertama, pakai EventServiceProvider buat mapping manual, ini enak kalau project masih kecil. Kedua, kalau udah kompleks, saya pakai Event Discovery yang bikin Laravel otomatis deteksi event berdasarkan nama folder, bikin struktur folder lebih rapi tanpa banyak boilerplate.

Kesalahan Umum

Sering banget saya nemuin beberapa kesalahan ini di code review: 1. Naruh logic bisnis yang kritikal di listener (seharusnya cuma side-effect). 2. Lupa antre (queue) listener yang makan waktu lama sampai bikin request timeout. 3. Data yang dikirim ke event terlalu besar (sebaiknya kirim ID saja lalu ambil lagi dari database). 4. Terlalu banyak listener untuk satu event sampai sulit di-debug. 5. Gak handle error di listener, jadi kalau gagal, user gak tau apa-apa karena background process silent.

Ringkasan

Intinya, Event & Listener itu bukan cuma soal rapi-rapi kode, tapi gimana kita bikin sistem yang bisa 'bernapas' dan lebih mudah dikembangin tanpa harus bongkar pasang controller yang sudah jalan. Kalau kamu ngerasa controller mulai kerasa berat, coba deh pecah jadi event, biasanya sih langsung terasa bedanya saat kita mau nambahin fitur baru di kemudian hari.

Komentar

Postingan populer dari blog ini

Fungsi lain tombol penerima panggilan di headset

Kegunaan tombol yang berada di headset utamanya adalah untuk menerima panggilan dan pause panggilan. Dan headset itu sendiri, kadang juga digunakan untuk mendengarkan music, digunakan bersama saat main game, supaya suara yang dikeluarkan oleh gadget tidak terlalu keras sehingga mengurangi beban gadget. Dengan mengurangi beban gadget, ada beberapa yang beranggapan kalau itu akan menghemat batere.

Cara Reset Password Database MySQL Menggunakan Laragon

Cara Reset Password Database MySQL Menggunakan Laragon Laragon adalah salah satu lingkungan pengembangan lokal (local development environment) yang populer di antara para pengembang web. Dalam beberapa kasus, mungkin kita perlu mereset password database MySQL pada Laragon jika lupa password atau untuk alasan keamanan tertentu. Berikut adalah langkah-langkah yang dapat kita ikuti untuk melakukan reset password database MySQL menggunakan Laragon:

Apa Itu R dan L di Headset? Ini Dia Perbedaan dan Fungsinya yang Perlu Anda Ketahui

Arti R dan L di Headset: Apa Perbedaannya? Headset adalah alat yang digunakan untuk mendengarkan suara dari sumber audio seperti ponsel, komputer, atau pemutar musik. Headset biasanya terdiri dari dua bagian, yaitu earphone yang dimasukkan ke dalam telinga dan mikrofon yang digunakan untuk berbicara. Pada earphone, kita sering melihat ada tulisan R dan L. Apa arti dan perbedaan dari kedua huruf tersebut?