Неизменяемый диспетчер событий¶
ImmutableEventDispatcher
-
это закрытый или замороженный диспетчер событий. Диспетчер не может регистрировать
новых слушателей или подписчиков.
ImmutableEventDispatcher
берёт другой диспетчер событий со всеми слушателями
и подписчиками. Неизменяемый диспетчер - это просто прокси оригинального диспетчера.
Для того, чтобы использовать его, для начала создайте нормальный диспетчер
EventDispatcher
и зарегистрируйте некоторых слушателей или подписчиков:
use Symfony\Component\EventDispatcher\EventDispatcher;
$dispatcher = new EventDispatcher();
$dispatcher->addListener('foo.action', function ($event) {
// ...
});
// ...
Теперь, внедрите это в ImmutableEventDispatcher
:
use Symfony\Component\EventDispatcher\ImmutableEventDispatcher;
// ...
$immutableDispatcher = new ImmutableEventDispatcher($dispatcher);
Вам нужно будет использовать этот новый диспетчер в вашем проекте.
Если вы попробуете выполнить один из методов, изменяющий диспетчер
(например, addListener()
), то будет вызвано BadMethodCallException
.
Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.