You are browsing the documentation for Symfony 2.2 which is not maintained anymore.
Consider upgrading your projects to Symfony 5.2.
The Immutable Event Dispatcher
The Immutable Event Dispatcher¶
New in version 2.1: This feature was added in Symfony 2.1.
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.