Я пытаюсь понять, как правильно использовать или вставлять зависимости в команды интерфейса командной строки Magento 2. Из https: // devdocs .magento.com / guides / v2.4 / extension-dev-guide / cli-cmds / cli-howto.html:

Ваша команда может использовать диспетчер объектов и функции внедрения зависимостей Magento; например, он может использовать внедрение зависимостей конструктора.

Диспетчер объектов (Magento\Framework\App\ObjectManager) достаточно прост, хотя другие части документа по какой-то причине не рекомендуют его использовать. Как «внедрение зависимостей конструктора» работает с командами CLI? Конструктор Symfony\Component\Console\Command\Command просто принимает строку, так что это не имеет смысла.

0
musicliftsme 27 Окт 2020 в 04:57

2 ответа

Лучший ответ

Я обнаружил, что зависимости конструктора были кэшированы в каталоге generated (M2.4.1), который необходимо было вручную удалить для правильной работы DI. В остальном, следуя https : //devdocs.magento.com/guides/v2.4/extension-dev-guide/cli-cmds/cli-howto.html работает.

0
musicliftsme 11 Ноя 2020 в 04:05

Да, вы можете использовать внедрение зависимостей в конструктор команд CLI.

Вы можете проверить некоторые собственные интерфейсы командной строки Magento. Пример php bin/magento store:list, вы можете проверить на Magento\Store\Console\Command\StoreListCommand. Они внедрили storeManager в конструктор, чтобы использовать его как обычно

1
James Dinh 10 Ноя 2020 в 04:28