Действие контроллера из процесса - PullRequest
0 голосов
/ 14 июля 2020

Symfony 2,8

Находясь в службе, вызываемой из команды, есть ли способ выполнить / вызвать действие контроллера как объект процесса? Или мне нужно скрыть это действие контроллера в команде, чтобы оно было вызвано процессом?

Мне нужно выполнить итеративные элементы BL (business logi c), уже закодированные в действия контроллера.

Цепочка вызовов:

Запланированная команда -> Контейнер службы -> N процессов или что-то еще с BL.

Служба должна контролировать / отслеживать выполнение процессов. (запуск, запуск, остановка, и т.д. c ..)

Другим способом?

Ура !!

1 Ответ

1 голос
/ 14 июля 2020

Чтобы избежать дублирования бизнес-логов c из действия контроллера, создайте новую службу и объявите ее в сервисном контейнере , вы указали, что используете symfony 2.8, чтобы не было autowire функция доступна, и вам нужно объявить ее вручную

services:
    app.custom_service:
        class:     AppBundle\Service\BusinessLogicService
        arguments: []

Затем вы можете использовать ее в своем контроллере, вводя ее через (внедрение зависимости) или просто вызывая ее из службы контейнера

// the container will instantiate a new BusinessLogicService()
$service = $this->container->get('app.custom_service');

Для команды вы можете реализовать ContainerAwareInterface и снова вызвать свою службу из контейнера служб

ex:

class BusinessLogicCommand extends Command implements ContainerAwareInterface
{

    public function getBusinessLogicService()
    {
        return $this->getContainer()->get('app.custom_service');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...