Часто в проектах Laravel встречаются ситуации, когда код начинает напоминать клубок проводов: одно место меняешь — и где-то ломается. События и слушатели помогают это разрулить. Идея проста: кто-то вызывает событие, а кто-то на него реагирует, при этом не знают друг о друге.
Создание события
Чтобы создать событие, используй команду Artisan make:event. Например, чтобы создать событие OrderShipped, выполни:
php artisan make:event OrderShipped
Это создаст новый класс события в каталоге app/Events.
Определение события
Открой созданный класс события и определи, какие данные должны быть переданы в слушатели. Это можно сделать, определив свойства в классе события.
class OrderShipped implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $order;
public function __construct(Order $order)
{
$this->order = $order;
}
}
Отправка события
Чтобы отправить событие, используй фасад Event или метод dispatch на экземпляре события.
event(new OrderShipped($order));
или
OrderShipped::dispatch($order);
Создание слушателя
Чтобы создать слушателя события, используй команду Artisan make:listener. Например, чтобы создать слушателя для события OrderShipped, выполни:
php artisan make:listener SendShipmentNotification --event=OrderShipped
Это создаст новый класс слушателя в каталоге app/Listeners.
Определение слушателя
Открой созданный класс слушателя и реализуй метод handle, который будет вызван при отправке события.
public function handle(OrderShipped $event)
{
// Логика обработки события
}
Регистрация слушателя
Чтобы зарегистрировать слушателя, добавь его в массив $listen в файле app/Providers/EventServiceProvider.php.
protected $listen = [
OrderShipped::class => [
SendShipmentNotification::class,
],
];
Заключение
События и слушатели — это способ разделять код и не делать из приложения кашу. Хочешь добавить новый функционал? Создай событие и слушатель, ничего не ломая в остальном коде. Это реально экономит время и нервы, особенно на больших проектах.
0 комментариев