Cover of the book Symfony 5: The Fast Track

Symfony 5: The Fast Track is the best book to learn modern Symfony development, from zero to production. +300 pages showcasing Symfony with Docker, APIs, queues & async tasks, Webpack, SPAs, etc.

New in Symfony 2.3: Events in the Console Component

Warning: This post is about an unsupported Symfony version. Some of this information may be out of date. Read the most recent Symfony Docs.

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:

use Symfony\Component\Console\Application;
use Symfony\Component\EventDispatcher\EventDispatcher;

$dispatcher = new EventDispatcher();

$application = new Application();

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.

Help the Symfony project!

As with any Open-Source project, contributing code or documentation is the most common way to help, but we also have a wide range of sponsoring opportunities.

New in Symfony 2.3: Events in the Console Component

Tweet this


Nice! No more workarounds for console exception logging as was described in
Looks like the PR link is wrong, I think it should be:
There is still 1 missing step for this feature: the SE does not inject the dispatcher

Comments are closed.

To ensure that comments stay relevant, they are closed for old posts.