EventDispatcher

The EventDispatcher Component

13 Сентября 2021 | Symfony Components

Сделайте свое приложение расширяемым и готовым к его будущим функциям!

EventDispatcher

Этот компонент реализует шаблоны проектирования Посредник и Наблюдатель. Чтобы было проще:

  • Посредник описывает объект, который управляет способом взаимодействия нескольких объектов друг с другом;
  • Наблюдатель - это модель поведения. Его роль состоит в том, чтобы поддерживать список третьих лиц, которые будут уведомлены, когда будет отмечено изменение его состояния.

Мы только что описали EventDispatcher с помощью этих двух шаблонов проектирования. Его работа проста: службы, которые мы будем вызывать слушателями, сообщают EventDispatcher, что они хотят получать уведомления, если происходит определенное событие. Затем EventDispatcher сохраняет список участников, которые должны быть уведомлены.

Когда происходит подписанное событие, EventDispatcher вызывает каждого из слушателей в соответствии с их порядком регистрации или приоритетом, если он указан.

Благодаря этому вы получаете очень масштабируемое приложение. Представим, что вы отправляете событие (компонент EventDispatcher позволяет отправлять события , а прослушиватели вызываются в зависимости от типа события), когда в вашем приложении создается пользователь. Вы определяете несколько слушателей, каждый из которых будет иметь роль: один для уведомления администраторов, один для отправки пользователю электронного письма с подтверждением, один для отправки электронного письма с активацией учетной записи и т. д.

Если в будущем вам потребуется добавить шаг (например, новое электронное письмо, нового человека для уведомления о завершении регистрации), вам просто нужно будет добавить нового слушателя в список существующих. Вы даже можете установить его приоритет, если это имеет значение.

Распространяя эту систему событий на разные места в вашем приложении, вы сможете подключаться почти везде и предлагать чистые эволюции.

Многие бандлы в экосистеме Symfony полагаются на этот механизм событий. Это чрезвычайно мощный инструмент в том смысле, что вы можете напрямую подключаться к коду пакета и адаптировать его поведение в точном соответствии с вашими потребностями.

Подробнее в документации по компоненту EventDispatcher.

Комментарии
Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.
Загрузка комментариев...