按照这些说明,我使用以下命令安装了 Symfony 3.4。
composer.phar create-project symfony/framework-standard-edition my_project_name_3_4
然后,按照这些其他说明,我向股票控制台应用程序添加了一个事件调度程序,以及一个事件侦听器
#File: my_project_name_3_4/bin/console
/* ... other code ... */
$application = new Application($kernel);
//START: my new code
//create dispatcher and add to application
use Symfony\Component\EventDispatcher\EventDispatcher;
$dispatcher = new EventDispatcher();
$application->setDispatcher($dispatcher);
//add my event to dispatcher
use Symfony\Component\Console\Event\ConsoleCommandEvent;
use Symfony\Component\Console\ConsoleEvents;
$dispatcher->addListener(ConsoleEvents::COMMAND, function (ConsoleCommandEvent $event) {
exit("\n\nHey, Symfony called my event! Let's crash this party! \n\n");
});
//END: my new code
$application->run($input);
但是,当我运行 Symfony 控制台命令时,
php bin/console help
我的事件没有触发。我希望上面的代码在 Symfony 调用我的ConsoleEvents::COMMAND
监听器时停止。
我做了一些调试,似乎调用从调度程序$application->run
中删除了我的事件?!在我进入进行适量调试的兔子洞之前,我想检查一下是否有什么明显的我做错了,是否有已知的科学来解决这个问题。我应该以不同的方式将事件添加到股票 Symfony 控制台应用程序吗?