Support for Events in n98-magerun
In version 1.77.0 we added the Symfony EventManager compontent to n98-magerun.
The event manager let you hook in the core commands.
Currently there are three core events which are available:
console.command – Before a command runs
console.terminate – After a command execution
console.exception – If a command stops with an exception
How can i register an observer?
n98-magerun support registration of Symfony subscriber objects.
This can easily done by a config.
You should define your subscriber class in config node “event -> subscriber”.
event:
subscriber:
- My\Namespace\MyEventSubscriber
The subscriber class must implement EventSubscriberInterface
.
Example:
<?php
namespace My\Namespace;
use Symfony\Component\Console\Event\ConsoleEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class MyEventSubscriber implements EventSubscriberInterface
{
/**
* Returns an array of event names this subscriber wants to listen to.
*
* @return array The event names to listen to
*
* @api
*/
public static function getSubscribedEvents()
{
return array('console.command' => 'logCommandName');
}
public function logCommandName(ConsoleEvent $event)
{
$event->getOutput()->writeln(
$event->getCommand()->getName()
);
}
}
The system is simple. All subscribers return a list of subscribed events.
If a event is dispatched all subsribers will be called automatically.
In our example we should see the name of any command in our terminal.
This offers you new features like a output logger.
We will add more events in the future which let you extend the core functions of n98-magerun.
Happy Coding!
0 Comments