Laravel - Pengurusan Peristiwa
Hai sana, para ahli Laravel masa depan! Hari ini, kita akan melantikan pengembaraan ke dalam dunia yang penuh sihir pengurusan peristiwa di Laravel. Jangan khawatir jika anda baru dalam bidang programming - saya akan memandu anda dalam perjalanan ini langkah demi langkah, seperti yang saya lakukan untuk ribuan murid selama tahun-tahun pengajaran saya. Jadi, ambil secangkir minuman kesukaan anda, dan mari kita memulakan pengembaraan yang menarik ini bersama!
apa Itu Peristiwa di Laravel?
Bayangkan anda di sebuah pesta (pasti pesta kode, kan!). Ketika sesuatu yang penting terjadi - seperti saat kue tiba - semua orang menjadi gembira. Dalam Laravel, peristiwa adalah seperti saat-saat menarik itu dalam aplikasi anda. Mereka adalah kejadian khusus yang aplikasi anda peduli.
Sebagai contoh, saat seorang pengguna mendaftar di website anda, itu adalah peristiwa. Sementara itu, saat sebuah pesanan ditempatkan, itu adalah peristiwa lain. Peristiwa membantu kita untuk menjaga kod kita teratur dan membolehkan bagian-bagian lain aplikasi untuk mereaksi pada saat-saat penting ini.
Mengapa Menggunakan Peristiwa?
-
Pemisahan (Decoupling): Peristiwa membantu memisahkan bagian-bagian berbeda dalam aplikasi anda. Itu seperti memiliki tim-tim berbeda di kerja - setiap tim tidak perlu tahu segala sesuatu tentang apa yang dilakukan tim lain.
-
Kemudahan (Flexibility): Anda dapat dengan mudah menambahkan reaksi baru kepada peristiwa tanpa mengubah kod yang sudah ada.
-
Ketelusan (Clarity): Peristiwa membuat kod anda mudah dipahami. Itu jelas apa yang sedang terjadi dan kapan.
Membuat Peristiwa Pertama Anda
Mari kita buat peristiwa pertama kita bersama. Kita akan membuat peristiwa yang terjadi saat pengguna baru mendaftar. mari kita lihat bagaimana caranya:
php artisan make:event NewUserRegistered
Perintah ini membuat file baru di app/Events
yang dinamai NewUserRegistered.php
. mari kita lihat isinya:
<?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 atas adalah seperti mengimpor alat-alat yang kita mungkin butuhkan. - Kelas event
NewUserRegistered
adalah tempat sihir terjadi. - Properti
$user
akan menyimpan informasi tentang pengguna baru. - Metode
__construct
dipanggil saat kita membuat event ini, dan itu menyimpan informasi pengguna.
Mengirim (Dispatch) Peristiwa
Sekarang kita memiliki peristiwa, mari kita gunakan nya! Kita akan mengirim peristiwa ini saat pengguna baru mendaftar. mari kita lihat bagaimana kita mungkin melakukan itu dalam kontroler:
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 mengirim event menggunakan fungsi event()
. Itu seperti meledakkan kembang api untuk menyambut pengguna baru!
Mendengar Peristiwa
Sekarang, mari kita buat listener yang akan mereaksi kepada peristiwa kita. Bayangkan ini sebagai orang di pesta yang bertanggung jawab memberikan topi pesta saat kue tiba.
Pertama, mari kita buat listener:
php artisan make:listener SendWelcomeEmail --event=NewUserRegistered
Ini membuat file baru di app/Listeners
yang dinamai SendWelcomeEmail.php
. mari kita lihat isinya:
<?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 sambutan di sini
}
}
Metode handle
adalah tempat kita menaruh kode yang akan berjalan saat event terjadi. Dalam hal ini, kita akan menaruh logika pengiriman email sambutan.
Mendaftarkan Listener Peristiwa
Untuk menghubungkan event kita dengan listener, 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
!"
Pengguna Subscriber Event
kadang-kadang, Anda mungkin ingin satu kelas untuk menghandle beberapa event. Itu di mana event subscribers masuk. Mereka seperti planner pesta yang bertanggung jawab atas beberapa aspek pesta.
mari kita buat event subscriber:
php artisan make:listener UserEventSubscriber
Lalu, 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 Peristiwa Dalam Antrian
Jika listener event anda melakukan sesuatu yang memakan waktu (seperti mengirim email), anda mungkin ingin mengantrian nya sehingga tidak memperlambat aplikasi anda. Itu seperti mengatakan ke seseorang, "Hey, bisakah anda melakukan tugas ini nanti saat anda tidak sibuk?"
Untuk membuat listener queueable, implementasikan interface ShouldQueue
:
use Illuminate\Contracts\Queue\ShouldQueue;
class SendWelcomeEmail implements ShouldQueue
{
// ...
}
Sekarang, Laravel secara otomatis akan mengantrian listener ini!
Tabel Metode Event
Berikut adalah tabel praktis dari metode utama yang kita gunakan dengan event:
Metode | Deskripsi |
---|---|
event() |
Mengirimkan event |
listen() |
Mendaftarkan listener event |
subscribe() |
Mendaftarkan event subscriber |
dispatch() |
Cara lain untuk mengirimkan event |
broadcast() |
Mengirimkan event (untuk aplikasi real-time) |
Dan itu lah, murid-murid sayang! Kita telah melantikan pengembaraan melalui negeri pengurusan peristiwa Laravel bersama. Ingat, latihan membuat sempurna, jadi jangan takut untuk mencoba konsep ini dalam proyek-proyek anda sendiri. Siapa tahu? Anda mungkin saja menjadi tuan pesta kode terbaik dengan keterampilan pengurusan event baru anda!
Selamat coding, dan mayat event anda selalu dihandle dengan keanggunan dan gaya!
Credits: Image by storyset