Description
Symfony version(s) affected: 4.3.0
Description
The \Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy
implements the EventDispatcherInterface
from the Contracts
Bundle, but the \Symfony\Component\EventDispatcher\Debug\WrappedListener
expects the EventDispatcherInterface
from the EventDispatcher
Bundle in its __invoke()
method.
This leads to the error below.
How to reporduce*
Dispatch an Event with the deprecated dispatch(Event $event)
signature, when your are in a dev env.
Possible Solution
The \Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy
should probably implement the EventDispatcherInterface
from the EventDispatcher
Bundle as it already implements all additional functions described by the EventDispatcherInterface
from the EventDispatcher
Bundle compared to the interface from the Contracts
Bundle.
Additional context
PHP Fatal error: Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Argument 3 passed to Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke() must implement interface Symfony\Component\EventDispatcher\EventDispatcherInterface, instance of Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy given, called in /app/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php on line 78 in /app/vendor/symfony/event-dispatcher/Debug/WrappedListener.php:113
Stack trace:
#0 /app/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php(78): Symfony\Component\EventDispatcher\Debug\WrappedListener->__invoke(Object(Symfony\Component\Console\Event\ConsoleErrorEvent), 'console.error', Object(Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy))
#1 /app/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php(168): Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy->dispatch(Object(Symfony\Component\Console\Event\ConsoleErrorEvent), 'console.error')
#2 /app/vendor/sym in /app/vendor/symfony/event-dispatcher/Debug/WrappedListener.php on line 113