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!
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?
-
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.
-
Flexibilitas: Anda dapat dengan mudah menambahkan reaksi baru ke event tanpa mengubah kode yang sudah ada.
-
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