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

Дата оновлення перекладу 2022-11-12

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

ImmutableEventDispatcher - це закрити або заморожений диспетчер подій. Диспетчер не може реєструвати нових слухачів або підписників.

ImmutableEventDispatcher бере інший диспетчер подій з усіма слухачами та підписниками. Незмінний диспетчер - це просто проксі оригінального диспетчера.

Для того, щоб використати його, спочатку створіть нормальний диспетчер EventDispatcher і зареєструйте деяких слухачів або підписників:

1
2
3
4
5
6
7
8
use Symfony\Component\EventDispatcher\EventDispatcher;

$dispatcher = new EventDispatcher();
$dispatcher->addListener('foo.action', function ($event) {
    // ...
});

// ...

Тепер, впровадьте це у ImmutableEventDispatcher:

1
2
3
4
use Symfony\Component\EventDispatcher\ImmutableEventDispatcher;
// ...

$immutableDispatcher = new ImmutableEventDispatcher($dispatcher);

Вам потрібно буде використати цей новий диспетчер у вашому проекті.

Якщо ви спробуєте виконати один з методів, що змінює диспетчер (наприклад, addListener()), то буде викликано BadMethodCallException.