不可变事件调度器
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 许可下获得许可。