跳到内容

不可变事件调度器

编辑此页

The ImmutableEventDispatcher 是一个锁定或冻结的事件调度器。该调度器无法注册新的监听器或订阅器。

The 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 异常。

本作品,包括代码示例,在 Creative Commons BY-SA 3.0 许可下获得许可。
目录
    版本