Добавить событие в Laravel/Lumen

В Laravel/Lumen после какого-то события можно вызвать нужную логику. Это очень удобно, когда нужно сохранить код чистым и разбить его на мелкие логические кусочки, которые легче читать и понять, соответственно и поддерживать.

Например, после редактирования пользователя вызвать событие UserAfterUpdate, к которому могут подписаться разные слушатели. Аналогом такой системы является всем известная Jquery.on(‘event’);

Допустим есть сервис UserService::update

 

Нужно, во-первых, создать событие в папке app/events, если папки нету, то создайте ее вручную

Создать класс, например, UserAfterUpdateEvent. Это контейнер, в которую передаются данные из сервиса.

laravel lumen event

Создать в папке app/Listeners слушателя, например SendEmailToUsers. Обязательный метод в нем handle()

laravel-lumen-listener

Зарегистрировать событие и слушателя в классе \App\Providers\EventServiceProvider::$listen

Раскомментировать вызов событий в app.php $app->register(App\Providers\EventServiceProvider::class);

Запустить событие с помощью функции event. Я, для простоты, запустил его прямо в контроллера, хотя его можно в любом месте

Теперь при обращении в нашему контроллеру вызывается событие

laravel-lumen-event-final

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *