
Pendahuluan
Bayangin lagi ngerjain fitur sederhana, tapi tiap kali user baru daftar, kamu harus kirim email verifikasi, buat record profil di database lain, dan update log aktivitas secara manual di controller. Makin lama, controller kamu bakal penuh sama kode "repetitif" yang bikin pusing. Laravel Observer itu ibarat asisten pribadi yang diem-diem ngelakuin semua tugas itu buat kamu tiap ada perubahan di model, tanpa harus bikin controller kamu berantakan.
Tips & Best Practices
- Di banyak project, biasanya saya mulai dari memisahkan logika bisnis dari controller. Tempatkan Observer di folder khusus agar struktur proyek tetap rapi dan mudah di-maintain saat aplikasi makin kompleks.
- Saat ngerjain fitur yang butuh trigger eksternal, saya sering pakai <code>after commit</code> supaya database nggak terlanjur kena commit kalau proses di dalam Observer malah gagal, biar data tetap konsisten.
- Selalu gunakan <code>Queueable</code> kalau proses di dalam Observer melibatkan API pihak ketiga atau pengiriman email, supaya aplikasi kamu nggak berasa lemot buat user pas lagi nunggu respon server.
Contoh Kode
Misalnya kita punya UserObserver buat handle tugas setelah user registrasi:
<code>class UserObserver { public function created(User $user) { // Kirim email welcome secara async Log::info('User baru saja join: ' . $user->id); } }</code>Variasi Implementasi
Kamu bisa pilih mau pakai Model Observer yang dedicated atau pakai Event & Listener bawaan Laravel. Kalau fiturnya cuma satu-dua, kadang pakai <code>booted</code> method di dalam Model itu sendiri sudah cukup. Tapi kalau logic-nya mulai nambah, pindahin ke class Observer terpisah adalah keputusan yang paling bijak supaya kode nggak jadi "God Class".
Kesalahan Umum
- Lupa daftarin observer di <code>EventServiceProvider</code>, terus bingung kenapa kodenya nggak jalan sama sekali.
- Naruh logic berat yang nunggu respon API di dalam Observer tanpa queue, akibatnya proses <code>save()</code> jadi sangat lambat.
- Obsesi bikin Observer buat semua hal, padahal kadang cukup pakai <code>booted</code> method yang lebih simple.
- Lupa nanganin exception di dalam observer yang akhirnya bikin proses save data gagal total karena error di background.
- Membuat "infinite loop" di mana Observer melakukan update ke model yang sama, sehingga trigger event berulang kali tanpa henti.
Ringkasan
Pada akhirnya, pakai Observer itu soal gimana kita bikin kode jadi lebih bersih dan nggak gampang error. Kalau kamu mulai ngerasa controller-mu terlalu "gemuk" dengan tugas-tugas administratif model, mungkin inilah saatnya buat ngasih tugas itu ke Observer. Codingan jadi lebih rapi, hidup jadi lebih tenang.
Komentar
Posting Komentar