Как добавить команду Symfony 5 с внедрением EntityManager в консольное приложение

#php #symfony #doctrine-orm #symfony5

#php #symfony #doctrine-orm #symfony5

Вопрос:

Я добавил инъекцию EntityManagerInterface в свой командный конструктор

 # Class MyCommand
public function __construct(EntityManagerInterface $entityManager)
{
    $this->em = $entityManager;
    parent::__construct();
}
  

но я не понимаю, как добавить мою команду в приложение, потому что теперь у нее новый аргумент

 use SymfonyComponentConsoleApplication;

$app = new Application();
$app->add(new MyCommand($entityManager)); // where is $entityManager defined ?
  

Как я могу получить определенный $ EntityManager? Или я должен где-то ее определить, потому что она не загружается автоматически с Symfony?

Комментарии:

1. Самый простой подход — просто использовать платформу Symfony. Но если вы ищете строго автономную команду, тогда вам действительно нужно настроить и создать экземпляр entity manager. Это не является частью библиотеки консоли. В документах doctrine есть подробности.

2. Спасибо. Я понял. Мне нужно использовать класс ядра Symfony на первом этапе и метод Kernel::boot().

3. Не знаю, какое отношение ядро имеет к вашему вопросу, но добро пожаловать. Просто кажется, что если у вас уже установлен код ядра, то у вас, вероятно, есть и фреймворк. В этом случае вы не будете напрямую взаимодействовать с классом приложения.