Мой вопрос здесь сводится к тому, является ли то, что я делаю, само по себе неправильно, или я обнаружил ошибку. Я просто не уверен …
Что я сделал? У нас относительно нормальное приложение на базе Symfony 2.8. Там мы также используем обычный сервисный контейнер. Также для обслуживания мы определяем группу команд для вызова в командной строке. Во время разработки я добавил еще один параметр в конструктор класса, который используется в одной из этих команд.
Проблема у меня сейчас в том, что я не могу правильно развернуть это. Когда я просто заменяю код и звоню app/console cache:clear
для регенерации кэшированного сервисного контейнера из определения сервисов, потому что при запуске ядро пытается создать все команды с использованием кэшированного сервисного контейнера. Поскольку кэшированная служба не предоставляет новый параметр, но измененный код требует этот параметр, запуск завершается неудачно.
Дальнейшие наблюдения:
setContainer()
метод из базового класса для извлечения собственных зависимостей. В этом случае одна команда не может получить свои зависимости из сервисного контейнера. Мне интересно, если setContainer()
слишком рано — если я отложил это execute()
, это может произойти только тогда, когда команда действительно вызвана, но не когда cache:clear
вызывается.cache:clear
команда, если это не работает?Задача ещё не решена.
Других решений пока нет …