首页 > 解决方案 > 来自进程的控制器操作

问题描述

Symfony 2.8

在从命令调用的服务中,有没有办法将控制器操作作为流程对象执行/调用?或者我是否必须将该控制器操作转换为命令才能被进程调用?

我需要执行已经编码到控制器操作中的迭代 BL(业务逻辑)元素。

调用链是:

预定命令->服务容器-> N个进程或任何带有BL的东西。

服务必须控制/监控流程的执行。(启动、运行、停止等)

还有什么办法吗?

干杯!!

标签: symfonysymfony-process

解决方案


为了避免从控制器操作中复制业务逻辑,创建一个新服务并将其声明到服务容器中,您指定您使用的是 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');
    }
}

推荐阅读