Symfony 2.8
在从命令调用的服务中,有没有办法将控制器操作作为流程对象执行/调用?或者我是否必须将该控制器操作转换为命令才能被进程调用?
我需要执行已经编码到控制器操作中的迭代 BL(业务逻辑)元素。
调用链是:
预定命令->服务容器-> N个进程或任何带有BL的东西。
服务必须控制/监控流程的执行。(启动、运行、停止等)
还有什么办法吗?
干杯!!
Symfony 2.8
在从命令调用的服务中,有没有办法将控制器操作作为流程对象执行/调用?或者我是否必须将该控制器操作转换为命令才能被进程调用?
我需要执行已经编码到控制器操作中的迭代 BL(业务逻辑)元素。
调用链是:
预定命令->服务容器-> N个进程或任何带有BL的东西。
服务必须控制/监控流程的执行。(启动、运行、停止等)
还有什么办法吗?
干杯!!
为了避免从控制器操作中复制业务逻辑,创建一个新服务并将其声明到服务容器中,您指定您使用的是 symfony 2.8,因此没有可用的自动装配功能,您需要手动声明它
services:
app.custom_service:
class: AppBundle\Service\BusinessLogicService
arguments: []
然后你可以在你的控制器中使用它通过(依赖注入)注入它或者简单地从容器服务中调用它
// the container will instantiate a new BusinessLogicService()
$service = $this->container->get('app.custom_service');
对于该命令,您可以实现ContainerAwareInterface并再次从服务容器调用您的服务
前任:
class BusinessLogicCommand extends Command implements ContainerAwareInterface
{
public function getBusinessLogicService()
{
return $this->getContainer()->get('app.custom_service');
}
}