来自流程的控制器操作

Controller Action From Process

Symfony 2.8

在从命令调用的服务中,有什么方法可以 execute/invoke 控制器操作作为进程对象吗?或者我是否必须将该控制器操作转换为命令才能被进程调用?

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

调用链为:

计划命令 --> 服务容器 --> N 进程或任何带 BL 的东西。

服务必须control/monitor进程执行。 (开始,运行,停止等。)

还有其他方法吗?

干杯!!

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