Незмінний диспетчер подій

Дата оновлення перекладу 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.