Неизменяемый диспетчер событий
Дата обновления перевода 2023-08-21
Неизменяемый диспетчер событий
ImmutableEventDispatcher - это закрытый или замороженный диспетчер событий. Диспетчер не может регистрировать новых слушателей или подписчиков.
ImmutableEventDispatcher
берёт другой диспетчер событий со всеми слушателями
и подписчиками. Неизменяемый диспетчер - это просто прокси оригинального диспетчера.
Для того, чтобы использовать его, для начала создайте нормальный диспетчер
EventDispatcher
и зарегистрируйте некоторых слушателей или подписчиков:
1 2 3 4 5 6 7 8 9
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Contracts\EventDispatcher\Event;
$dispatcher = new EventDispatcher();
$dispatcher->addListener('foo.action', function (Event $event): void {
// ...
});
// ...
Теперь, внедрите это в ImmutableEventDispatcher
:
1 2 3 4
use Symfony\Component\EventDispatcher\ImmutableEventDispatcher;
// ...
$immutableDispatcher = new ImmutableEventDispatcher($dispatcher);
Вам нужно будет использовать этот новый диспетчер в вашем проекте.
Если вы попробуете выполнить один из методов, изменяющий диспетчер
(например, addListener()
), то будет вызвано BadMethodCallException
.