В моем App
есть вспомогательный класс App\Command\GenerateFixturesCommand
, который предоставляет команду с именем my-nice-project:generate-fixtures
.
Эта команда использует сервис моего собственного проекта с именем App\Services\CatalogFixtureGenerator
, который генерирует 1000 произвольных PDF-документов для тестирования при разработке приложения.
Для этого этот сервис использует класс joshtronic\LoremIpsum
, который требуется в composer только в dev
. LoremIpsum - сторонняя библиотека. Требуется в соответствии с require-dev
.
для композитора.
Итак, инъекция:
- Я управляю своим
GenerateFixturesCommand
.
- Перед этим система прозрачно находит мой
CatalogFixtureGenerator
и вводит его в команду.
- Перед этим система прозрачно находит стороннюю службу
LoremIpsum
, чтобы внедрить ее в службу генератора приборов.
Все подключено автоматически.
При развертывании на prod
и выполнении composer install --no-dev --optimize-autoloader
, конечно, класс LoremIpsum
не устанавливается.
Но когда я очищаю кеш с помощью APP_ENV=prod php bin/console cache:clear
, фреймворк находит команду и не может внедрить автонастроенные зависимости.
[WARNING] Some commands could not be registered:
In CatalogsFixtureGenerator.php line 26:
Class 'joshtronic\LoremIpsum' not found
Эта команда my-nice-project:generate-fixtures
никогда не будет использоваться на рабочем сервере.
Вопрос
Как я могу "отключить" команду в prod
?
Я имею в виду: как я могу сказать платформе, что класс GenerateFixturesCommand
не должен быть загружен, ни его автосвязанные зависимости, и ни один из них не должен быть автоподключен в prod
?