پیشرفته
·
۸ دقیقه مطالعه
Event و Listener
Eventها اجازه میدهند منطق را جدا کنی: «وقتی X رخ داد، این کارها را بکن» — بدون شلوغکردن کد اصلی.
ساخت
php artisan make:event UserRegistered
php artisan make:listener SendWelcomeEmail --event=UserRegistered
انتشار رویداد
UserRegistered::dispatch($user);
// یا
event(new UserRegistered($user));
Listener
public function handle(UserRegistered $event): void {
Mail::to($event->user)->send(new WelcomeMail());
}
چرا مفید است؟
فرض کن هنگام ثبتنام میخواهی: ایمیل خوشآمد بفرستی، به ادمین اطلاع دهی، آمار ثبت کنی. بهجای انباشتن همه در کنترلر ثبتنام، یک Event منتشر کن و چند Listener به آن وصل کن. کد تمیز و توسعهپذیر میماند.
Model Events
Eloquent خودش رویداد دارد: creating, created, updated, deleted:
protected static function booted() {
static::creating(fn ($post) => $post->slug = Str::slug($post->title));
}