Fungsi Event & Listener Pada Laravel

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:

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.

Subscribe

Related articles

Web Developer | Pengalaman Magang di Udacoding

Udacoding menjadi salah satu tempat, dimana peserta magang...

Segala Hal yang Perlu Kamu Tahu tentang Dark Theme

Ngomongin mode gelap, kayaknya sekarang lagi jadi yang hits...

TinyMCE: Solusi Praktis untuk Konten Web yang Lebih Interaktif

TinyMCE adalah alat untuk membuat dan mengedit teks di...

LEAVE A REPLY

Please enter your comment!
Please enter your name here