Kembali ke Artikel
10 November 2025
vandyahmad24
Diperbarui: 18 April 2026

Apa Itu Event dan Listener di Laravel 12: Arsitektur Event-Driven

Salah satu ciri arsitektur Laravel yang baik: ketika sesuatu terjadi di aplikasi, komponen lain bisa “mendengarkan” dan merespons, tanpa si pengirim perlu tahu siapa yang merespons.

Itulah fungsi Event dan Listener di Laravel. Artikel ini menjelaskan cara kerjanya dan bagaimana implementasinya dengan contoh nyata.

Konsep Event dan Listener

Event adalah kejadian yang terjadi di aplikasi: user mendaftar, order diproses, pembayaran berhasil. Listener adalah kode yang merespons kejadian tersebut.

Satu event bisa punya beberapa listener. Misalnya saat UserRegistered:

  • Listener 1: kirim email selamat datang
  • Listener 2: create profil default
  • Listener 3: sync ke CRM

Controller yang trigger event tidak perlu tahu ada 3 listener di belakang. Ini yang membuat kode lebih modular.

Membuat Event dan Listener

php artisan make:event UserRegistered
php artisan make:listener SendWelcomeEmail --event=UserRegistered
php artisan make:listener CreateDefaultProfile --event=UserRegistered

Kelas event (app/Events/UserRegistered.php):

<?php

namespace AppEvents;

use AppModelsUser;
use IlluminateFoundationEventsDispatchable;
use IlluminateQueueSerializesModels;

class UserRegistered
{
    use Dispatchable, SerializesModels;

    public function __construct(
        public readonly User $user
    ) {}
}

Listener (app/Listeners/SendWelcomeEmail.php):

<?php

namespace AppListeners;

use AppEventsUserRegistered;
use AppMailWelcomeMail;
use IlluminateContractsQueueShouldQueue;
use IlluminateSupportFacadesMail;

class SendWelcomeEmail implements ShouldQueue
{
    public function handle(UserRegistered $event): void
    {
        Mail::to($event->user)->send(new WelcomeMail($event->user));
    }
}

Implement ShouldQueue agar listener dijalankan di background queue, tidak memperlambat proses registrasi.

Registrasi Event dan Listener

Di Laravel 12 (dan sejak Laravel 11), cukup tambahkan di app/Providers/AppServiceProvider.php:

<?php

namespace AppProviders;

use AppEventsUserRegistered;
use AppListenersSendWelcomeEmail;
use AppListenersCreateDefaultProfile;
use IlluminateSupportFacadesEvent;
use IlluminateSupportServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        Event::listen(UserRegistered::class, SendWelcomeEmail::class);
        Event::listen(UserRegistered::class, CreateDefaultProfile::class);
    }
}

Laravel juga mendukung auto-discovery. Kalau nama listener mengikuti konvensi, registrasi manual tidak diperlukan. Tapi registrasi manual lebih eksplisit dan lebih mudah di-trace.

Dispatch Event

// Di controller atau service
use AppEventsUserRegistered;

$user = User::create($validated);

UserRegistered::dispatch($user);

// Atau lewat helper
event(new UserRegistered($user));

Listener Synchronous vs Queued

Kalau listener implement ShouldQueue, dijalankan di background. Kalau tidak, dijalankan langsung (synchronous) sebelum response dikirim.

Kapan pakai synchronous:

  • Listener yang hasilnya dibutuhkan sebelum response dikirim
  • Operasi yang sangat cepat (kurang dari 10ms)

Kapan pakai queued:

  • Kirim email, notifikasi, sync ke API eksternal
  • Semua operasi yang tidak perlu hasilnya sekarang

Wildcard Listener

Kalau perlu listen ke banyak event sekaligus (misalnya untuk logging):

Event::listen('AppEvents*', function (string $eventName, array $data) {
    Log::info("Event: {$eventName}", $data);
});

Baca Juga

Butuh tim untuk merancang arsitektur event-driven di aplikasi Laravel Anda? Lihat layanan pengembangan aplikasi kami.

Tag: #laravel #php #tutorial
BACA JUGA

Artikel Lainnya di Kategori Laravel

Laravel

10 November 2025

Apa Itu Policy dan Gate di Laravel 12: Sistem Otorisasi yang Tepat

Bayangkan ada dua pertanyaan berbeda soal keamanan di aplikasi Anda: “Apakah user ini boleh edit artikel?” dan “Apakah user yang login adalah editor?” Pertanyaan pertama terkait Policy: otorisasi berdasarkan resource. Pertanyaan kedua terkait Gate: otorisasi berdasarkan kemampuan/role. Keduanya bagian dari sistem Authorization di Laravel. Apa Itu Gate? Gate adalah cara mendefinisikan otorisasi berbasis kemampuan (ability) […]

Baca Artikel
Laravel

10 November 2025

Contoh Implementasi Observer di Laravel 12: Auto-Slug, Audit Trail, dan Cache

Artikel ini melanjutkan penjelasan konsep Observer di Laravel 12 dengan studi kasus implementasi lengkap: sistem audit trail dan auto-slug generation. Studi Kasus 1: Auto-Slug Generation Masalah umum: setiap kali artikel dibuat atau diupdate, slug harus di-generate dari title. Tanpa Observer, logika ini tersebar di berbagai controller. Dengan Observer, cukup satu tempat: <?php namespace AppObservers; use […]

Baca Artikel
laravel Laravel

9 November 2025

Invokable Controller di Laravel: Cara Kerja, Contoh Kode, dan Kapan Memakainya

Ada satu fitur Laravel yang sering dilewatkan developer pemula: invokable controller. Padahal kalau dipakai di tempat yang tepat, kode jadi lebih bersih dan lebih mudah dibaca. Artikel ini menjelaskan apa itu invokable controller, kapan sebaiknya dipakai, dan bagaimana cara implementasinya di Laravel 12. Apa Itu Invokable Controller? Invokable controller adalah controller yang hanya punya satu […]

Baca Artikel

Ingin Membaca Artikel Lainnya?

Temukan lebih banyak insight dan tips tentang teknologi dan bisnis digital.

Lihat Semua Artikel