Незмінний диспетчер подій
Дата оновлення перекладу 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
.