Внедрение сервисов в приложение CLI Symfony 4 - PullRequest
0 голосов
/ 02 марта 2019

У меня есть приложение Symfony 4.2 с CLI-скриптом, вызывающим команду, которая прекрасно работает.

Но в своей команде я пытаюсь получить доступ к БД (через Doctrine).

Документация предполагает, что я могу просто добавить конструктор в свою Команду с тем, что мне нужно, и он будет добавлен.Кроме того, это мой код, создающий Команду, когда я вызываю:

$applicant->add(new \App\Command\MyCommand());

Если мне нужно внедрить ее, это нормально, но как мне получить доступ к сервису из моего сценария CLI в этом случае?

1 Ответ

0 голосов
/ 02 марта 2019

Пожалуйста, прочитайте документацию https://symfony.com/doc/current/console.html

Регистрация команды Команды Symfony должны быть зарегистрированы как сервисы и помечены тегом console.command.Если вы используете конфигурацию services.yaml по умолчанию, это уже сделано для вас, благодаря автоматической настройке.

Выполнение команды После настройки и регистрации команды вы можете выполнить ее в терминале:

php bin/console app:create-user Как и следовало ожидать, эта команда ничего не сделает, так как вы еще не написали никакой логики.Добавьте свою собственную логику в метод execute ().

Как вы можете видеть, вы можете позже вызывать свои команды через bin / console.Чтобы команда имела доступ к базе данных, вам нужно внедрить определенный сервис, я не фанат внедрения всего контейнера, но вот пример для вас Symfony 4: доктрина в команде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...