
Src : https://vegibit.com/wp-content/uploads/2016/03/laravel-events-and-listeners.jpg
Laravel adalah sebuah framework PHP yang menyediakan berbagai fitur dan fasilitas untuk membangun aplikasi web dan mobile yang modern dan elegan. Salah satu fitur yang ditawarkan oleh Laravel adalah event dan listener, yang merupakan implementasi dari pola desain observer12.
Apa itu Event dan Listener?
Event adalah sebuah peristiwa yang terjadi dalam aplikasi Anda, yang dapat Anda tangkap dan tanggapi dengan menggunakan listener. Listener adalah sebuah kelas yang berisi logika untuk mengeksekusi aksi tertentu ketika event tertentu dipicu. Dengan menggunakan event dan listener, Anda dapat membuat aplikasi Anda lebih responsif, modular, dan terpisah12.
Contoh event yang sering terjadi dalam aplikasi web adalah:
- User mendaftar akun baru
- User login atau logout
- User mengirim pesan atau komentar
- User melakukan transaksi atau pembayaran
- User mengubah profil atau pengaturan
Contoh listener yang dapat Anda buat untuk merespon event tersebut adalah:
- Mengirim email konfirmasi atau notifikasi
- Membuat atau menghapus session atau cookie
- Menyimpan atau menghapus data dari database
- Mengirim atau menerima data dari API lain
- Mengubah atau memperbarui data dari cache atau storage
Bagaimana Cara Menggunakan Event dan Listener?
Untuk menggunakan event dan listener di Laravel, Anda perlu melakukan beberapa langkah berikut:
- Membuat Event: Anda dapat membuat event dengan menggunakan perintah
php artisan make:event NamaEvent, yang akan menghasilkan sebuah kelas event di direktoriapp/Events. Anda dapat menambahkan properti dan konstruktor yang dibutuhkan oleh event Anda, serta mengimplementasikan interfaceShouldBroadcastjika Anda ingin mengirim event ke klien melalui WebSockets13. - Membuat Listener: Anda dapat membuat listener dengan menggunakan perintah
php artisan make:listener NamaListener --event=NamaEvent, yang akan menghasilkan sebuah kelas listener di direktoriapp/Listeners. Anda dapat menambahkan logika yang ingin Anda jalankan ketika event dipicu di dalam methodhandle, serta mengimplementasikan interfaceShouldQueuejika Anda ingin menjalankan listener secara asinkron13. - Mendaftarkan Event dan Listener: Anda dapat mendaftarkan event dan listener yang telah Anda buat di dalam file
app/Providers/EventServiceProvider, dengan menambahkan pasangan event dan listener di dalam array$listen. Anda juga dapat menggunakan fitur automatic discovery, yang akan secara otomatis mendaftarkan event dan listener yang ada di direktoriapp/Eventsdanapp/Listeners, tanpa perlu menambahkan kode di fileEventServiceProvider134.
Memicu Event: Anda dapat memicu event yang telah Anda buat dengan menggunakan method event atau dispatch, yang menerima sebuah instance dari kelas event sebagai parameter. Anda dapat memanggil method ini di mana saja dalam aplikasi Anda, seperti di dalam controller, model, middleware, atau helper13.
Contoh Penggunaan Event dan Listener
Berikut adalah contoh penggunaan event dan listener di Laravel, yang akan mengirim email notifikasi ketika user mendaftar akun baru.
Membuat Event
<?php
namespace App\Listeners;
use App\Events\UserRegistered;
use App\Mail\UserRegisteredMail;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Mail;
class SendUserRegisteredNotification implements ShouldQueue
{
use InteractsWithQueue;
public function handle(UserRegistered $event)
{
Mail::to($event->user)->send(new UserRegisteredMail($event->user));
}
}
Mendaftarkan Event dan Listener
<?php
namespace App\Providers;
use App\Events\UserRegistered;
use App\Listeners\SendUserRegisteredNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
protected $listen = [
UserRegistered::class => [
SendUserRegisteredNotification::class,
],
];
}
Memicu Event
<?php
namespace App\Http\Controllers;
use App\Events\UserRegistered;
use App\Http\Requests\RegisterRequest;
use App\Models\User;
use Illuminate\Http\Request;
class RegisterController extends Controller
{
public function register(RegisterRequest $request)
{
$user = User::create($request->validated());
event(new UserRegistered($user));
return redirect()->route('home')->with('success', 'Registration successful.');
}
}
Kesimpulan
Event dan listener adalah fitur yang sangat berguna dan bermanfaat di Laravel, yang memungkinkan Anda untuk membuat aplikasi yang lebih responsif, modular, dan terpisah. Dengan menggunakan event dan listener, Anda dapat mengurangi coupling antara komponen aplikasi Anda, serta meningkatkan kualitas dan performa aplikasi Anda.
Sekian artikel yang saya buat tentang fungsi event dan listener pada Laravel. Semoga bermanfaat dan terima kasih.