Введение в события Laravel
В контроллере часто делают сразу несколько дел: сохраняют заказ, шлют письмо, пишут в лог, обновляют статистику. Действие разрастается, его трудно читать и тестировать. Любая новая «побочка» снова лезет в тот же метод.
Событие - это сообщение приложению: «произошёл факт». Например, заказ оформлен, пользователь зарегистрирован, пост опубликован. Само событие не шлёт письма и не трогает базу сверх необходимого - оно только несёт данные об этом факте.
Слушатель - класс, который реагирует на событие. Один слушатель шлёт письмо, другой пишет лог, третий пересчитывает счётчики. К одному событию можно повесить несколько слушателей - и добавлять новые, не раздувая контроллер.
Так ответственность делится: контроллер (или сервис) фиксирует факт и отправляет событие, а побочные действия живут в слушателях. В следующих уроках создадим событие, слушатель, привяжем их и отправим факт из кода.
Зачем разделять событие и слушатель?
Приведите пример факта в приложении, на который удобно повесить несколько реакций.
Чем подход с событиями удобнее, чем писать письмо и лог прямо в контроллере?