🔹 เกริ่นนำ
Laravel มีระบบ Event-Driven ที่ช่วยให้คุณสามารถแยก logic ออกจากกันได้อย่างเป็นระบบ ตัวอย่างเช่น เมื่อมีผู้ใช้ลงทะเบียนใหม่ คุณสามารถแยกกระบวนการส่งอีเมล หรือสร้าง log ออกไปไว้ใน Listener เพื่อให้ระบบหลักสะอาดและดูแลรักษาง่าย
บทนี้จะแนะนำวิธีสร้าง Event และ Listener พร้อมตัวอย่างการเรียกใช้งาน และแนวทางปฏิบัติที่ดี
🔸 การสร้าง Event และ Listener
php artisan make:event UserRegistered
php artisan make:listener SendWelcomeEmail --event=UserRegistered
🔸 การลงทะเบียน Listener (ถ้าไม่ใช้ auto-discovery)
// app/Providers/EventServiceProvider.php
protected $listen = [
UserRegistered::class => [
SendWelcomeEmail::class,
],
];
🔸 ตัวอย่าง Event
class UserRegistered implements ShouldBroadcast
{
public $user;
public function __construct(User $user)
{
$this->user = $user;
}
}
🔸 ตัวอย่าง Listener
class SendWelcomeEmail
{
public function handle(UserRegistered $event)
{
Mail::to($event->user->email)->send(new WelcomeMail($event->user));
}
}
🔸 การ Trigger Event
use App\Events\UserRegistered;
event(new UserRegistered($user));
💡 Laravel จะค้นหาและเรียก Listener ให้อัตโนมัติเมื่อ Event ถูก trigger