Ở bài trước, chúng ta đã học Observer.
Observer cho phép chúng ta phản ứng khi một Eloquent Model xảy ra sự kiện:
Post
│
├── created
├── updated
├── deleted
└── restored
│
▼
PostObserver
Ví dụ:
public function created(Post $post): void
{
logger("Post {$post->id} đã được tạo");
}
Observer rất hữu ích.
Tuy nhiên, trong ứng dụng thực tế sẽ có những sự kiện không nhất thiết phải gắn trực tiếp với Model.
Ví dụ:
User đăng ký tài khoản → gửi email chào mừng.
Đơn hàng được đặt → gửi thông báo.
Bài viết được publish → ghi log.
Thanh toán thành công → cập nhật dữ liệu.
User đăng ký → tạo một số dữ liệu liên quan.
Post được publish → thông báo cho người quản trị.
Lúc này chúng ta có thể sử dụng:
Event & Listener
Mô hình:
Một hành động xảy ra
│
▼
Event
│
▼
Listener
│
├── Gửi email
├── Ghi log
├── Gửi notification
└── Xử lý dữ liệu






