События и слушатели в Laravel предоставляют мощный механизм для организации кода, позволяя вам легко реагировать на различные события, происходящие в вашем приложении. Это позволяет разделить логику приложения на независимые части, упрощая тестирование и поддержку кода. В этом обзоре мы рассмотрим, как создавать и использовать события и слушатели в 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,
    ],
];

Заключение

События и слушатели в Laravel предоставляют мощный и гибкий способ организации кода, позволяя легко реагировать на различные события в вашем приложении. Это делает ваш код более модульным и легким для тестирования и поддержки. Используя события и слушатели, вы можете легко расширять функциональность вашего приложения, реагируя на различные события, происходящие в системе.