You are browsing the documentation for Symfony 2.5 which is not maintained anymore.
Consider upgrading your projects to Symfony 5.2.
The Immutable Event Dispatcher
The Immutable Event Dispatcher¶
The Symfony\Component\EventDispatcher\ImmutableEventDispatcher
is
a locked or frozen event dispatcher. The dispatcher cannot register new
listeners or subscribers.
The ImmutableEventDispatcher
takes another event dispatcher with all the
listeners and subscribers. The immutable dispatcher is just a proxy of this
original dispatcher.
To use it, first create a normal dispatcher (EventDispatcher
or
ContainerAwareEventDispatcher
) and register some listeners or
subscribers:
use Symfony\Component\EventDispatcher\EventDispatcher;
$dispatcher = new EventDispatcher();
$dispatcher->addListener('foo.action', function ($event) {
// ...
});
// ...
Now, inject that into an ImmutableEventDispatcher
:
use Symfony\Component\EventDispatcher\ImmutableEventDispatcher;
// ...
$immutableDispatcher = new ImmutableEventDispatcher($dispatcher);
You’ll need to use this new dispatcher in your project.
If you are trying to execute one of the methods which modifies the dispatcher
(e.g. addListener
), a BadMethodCallException
is thrown.
This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.