Laravel - Penanganan Event

Halo sana, para ahli Laravel masa depan! Hari ini, kita akan menyelam ke dalam dunia magis Penanganan Event di Laravel. Jangan khawatir jika Anda masih baru dalam programming - saya akan mengarahkan Anda melalui perjalanan ini langkah demi langkah, seperti yang telah saya lakukan untuk ribuan murid selama tahun-tahun mengajar saya. Jadi, ambil secangkir minuman favorit Anda, dan mari kita memulai petualangan menarik ini bersama!

Laravel - Event Handling

apa itu Event di Laravel?

Bayangkan Anda di sebuah pesta (pasti pesta coding, tentu saja!). Ketika sesuatu yang penting terjadi - seperti saat kue datang - semua orang menjadi senang. Di Laravel, event adalah seperti momen menarik ini dalam aplikasi Anda. Mereka adalah kejadian khusus yang aplikasi Anda peduli tentang.

Misalnya, saat seorang pengguna mendaftar di website Anda, itu adalah event. Saat sebuah pesanan ditempatkan, itu adalah event lain. Event membantu kita untuk menjaga kode kita terorganisir dan memungkinkan bagian-bagian berbeda dari aplikasi kita untuk merespon momen penting ini.

Mengapa Menggunakan Event?

  1. Decoupling: Event membantu memisahkan bagian-bagian berbeda dari aplikasi Anda. Itu seperti memiliki tim-tim berbeda di kerja - setiap tim tidak perlu tahu tentang apa yang dilakukan tim lain.

  2. Flexibilitas: Anda dapat dengan mudah menambahkan reaksi baru ke event tanpa mengubah kode yang sudah ada.

  3. Klaritas: Event membuat kode Anda mudah dipahami. Itu jelas apa yang terjadi dan kapan.

Membuat Event Pertama Anda

Mari kita buat event pertama kita bersama. Kita akan membuat event yang terjadi saat pengguna baru mendaftar. Ini adalah caranya:

php artisan make:event NewUserRegistered

Perintah ini membuat file baru di app/Events yang disebut NewUserRegistered.php. Mari kita lihat di dalamnya:

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class NewUserRegistered
{
use Dispatchable, InteractsWithSockets, SerializesModels;

public $user;

public function __construct($user)
{
$this->user = $user;
}

public function broadcastOn()
{
return new PrivateChannel('channel-name');
}
}

Jangan biarkan semua kode ini menakutkan Anda! Itu seperti resep - kita akan menjelaskan setiap bahan:

  • Statement use di bagian atas adalah seperti mengimpor alat-alat yang kita mungkin butuhkan.
  • Kelas event NewUserRegistered adalah tempat magik terjadi.
  • Properti $user akan menyimpan informasi tentang pengguna baru.
  • Metode __construct dipanggil saat kita membuat event ini, dan itu menyimpan informasi pengguna.

Menembak (Mengirim) Event

Sekarang kita memiliki event, mari kita gunakan nya! Kita akan menembak event ini saat pengguna baru mendaftar. Ini adalah bagaimana kita mungkin melakukan itu di dalam controller:

use App\Events\NewUserRegistered;

public function register(Request $request)
{
// ... logika pendaftaran pengguna ...

$user = User::create($request->all());

event(new NewUserRegistered($user));

return redirect('/welcome');
}

Di sini, setelah kita membuat pengguna baru, kita menembak event kita menggunakan fungsi event(). Itu seperti memicu kembang api untuk menandai pengguna baru!

Mendengar Event

Sekarang, mari kita buat listener yang akan merespon event kita. Bayangkan ini seperti orang di pesta yang bertanggung jawab untuk memberikan topi pesta saat kue datang.

Pertama, mari kita buat listener:

php artisan make:listener SendWelcomeEmail --event=NewUserRegistered

Ini membuat file baru di app/Listeners yang disebut SendWelcomeEmail.php. Mari kita lihat di dalamnya:

<?php

namespace App\Listeners;

use App\Events\NewUserRegistered;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;

class SendWelcomeEmail
{
public function handle(NewUserRegistered $event)
{
// Akses pengguna menggunakan $event->user
// Logika mengirim email welcame di sini
}
}

Metode handle adalah tempat kita menempatkan kode yang akan dijalankan saat event terjadi. Dalam hal ini, kita akan menempatkan logika untuk mengirim email welcame.

Mendaftarkan Listener Event

Untuk menghubungkan event kita dengan listener kita, kita perlu mendaftarkan mereka. Buka app/Providers/EventServiceProvider.php dan tambahkan ini ke array $listen:

protected $listen = [
NewUserRegistered::class => [
SendWelcomeEmail::class,
],
];

Ini memberitahu Laravel, "Hey, saat NewUserRegistered terjadi, jalankan SendWelcomeEmail!"

Subscriber Event

kadang-kadang, Anda mungkin ingin satu kelas menghandle beberapa event. Itu di mana event subscriber datang. Mereka seperti planner pesta yang bertanggung jawab atas beberapa aspek pesta.

Ini adalah bagaimana membuat event subscriber:

php artisan make:listener UserEventSubscriber

Lalu, di dalam kelas UserEventSubscriber:

<?php

namespace App\Listeners;

class UserEventSubscriber
{
public function handleUserRegistered($event) {}

public function handleUserLoggedIn($event) {}

public function subscribe($events)
{
$events->listen(
'App\Events\NewUserRegistered',
'App\Listeners\UserEventSubscriber@handleUserRegistered'
);

$events->listen(
'App\Events\UserLoggedIn',
'App\Listeners\UserEventSubscriber@handleUserLoggedIn'
);
}
}

Untuk mendaftarkan subscriber ini, tambahkan ini ke properti $subscribe di EventServiceProvider:

protected $subscribe = [
'App\Listeners\UserEventSubscriber',
];

Listener Event Dalam Antrian

Jika listener event Anda melakukan sesuatu yang memakan waktu (seperti mengirim email), Anda mungkin ingin mengantrian nya sehingga itu tidak memperlambat aplikasi Anda. Itu seperti mengatakan ke seseorang, "Hey, bisakah Anda melakukan tugas ini nanti saat Anda tidak lagi sibuk?"

Untuk membuat listener antri, implementasikan interface ShouldQueue:

use Illuminate\Contracts\Queue\ShouldQueue;

class SendWelcomeEmail implements ShouldQueue
{
// ...
}

Sekarang, Laravel akan secara otomatis mengantrian listener ini!

Tabel Metode Event

Ini adalah tabel praktis dari metode utama yang kita gunakan dengan event:

Metode Deskripsi
event() Mengirim event
listen() Mendaftarkan listener event
subscribe() Mendaftarkan subscriber event
dispatch() Cara lain untuk mengirim event
broadcast() Mengudara event (untuk aplikasi real-time)

Dan itu saja, murid-murid tercinta! Kita telah melakukan perjalanan melalui negeri Penanganan Event Laravel bersama. Ingat, latihan membuat sempurna, jadi jangan takut untuk mencoba konsep ini dalam proyek Anda sendiri. Siapa tahu? Anda mungkin saja mengadakan pesta coding terbaik dengan keterampilan penanganan event baru Anda!

Selamat coding, dan semoga event Anda selalu ditangani dengan keanggunan dan gaya!

Credits: Image by storyset