Contributed by
Fabien Potencier
in #7466.
Today, I'm about to write about one of the oldest feature requests for the Console component: the possibility to hook during the lifecycle of a command execution. I have been delaying this feature for a long time as I did not want to introduce a hard dependency between the Console component and the Event Dispatcher component.
But as of Symfony 2.3, you can listen to several events that are dispatched by the main console application:
1 2 3 4 5 6 7 8 | useSymfony\Component\Console\Application;useSymfony\Component\EventDispatcher\EventDispatcher;$dispatcher=newEventDispatcher();$application=newApplication();$application->setDispatcher($dispatcher);$application->run(); |
Note that events are only dispatched if you inject an event dispatcher.
Three events are automatically dispatched:
ConsoleEvents::COMMAND
lets you do something before a command is executed;ConsoleEvents::TERMINATE
lets you perform some cleanup actions after the command has been executed;ConsoleEvents::EXCEPTION
lets you handle exceptions thrown during the execution of a command.
If you want to see some code example, read the full documentation about this new feature in the Console component documentation.