我想在kernel.terminate事件上执行我的服务以使其异步。 在返回响应之前我在控制器中做的是这个
$this->eventDispatcher->addListener(KernelEvents::TERMINATE, function (PostResponseEvent $event) use ($vat) {
// Launch the job
$command = new WebDriverCommand();
$command->setContainer($this->container);
$input = new ArrayInput(array('id' => $vat->getId()));
$output = new NullOutput();
$command->run($input, $output);
});
我的问题是:运行执行我的服务 AND 的命令之间是否存在差异没有命令直接调用服务? 提前谢谢。
答案 0 :(得分:2)
绝对没有区别。无论如何,你的命令必须没有任何逻辑。无论如何,事件监听器和命令都应该调用服务 - 在框架和域逻辑之间是一种粘合剂。
您的课程实际上更容易进行单元测试和维护。