跳到內容

不可變事件派發器

編輯此頁

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

這項作品,包括程式碼範例,以 Creative Commons BY-SA 3.0 授權條款發佈。
目錄
    版本