Я рефакторинг старого приложения в PHP.
Я пытаюсь использовать компонент внедрения зависимостей Symphony для внедрения сервисов в контроллеры (или другие сервисы), но я не знаю, как этого добиться, потому что документация по симфонии больше подготовлена для использования каркаса, чем компонентов каркаса.
У меня уже есть свое Ядро, Контейнер, который содержит все сервисы и контроллеры (контроллеры уже зарегистрированы как сервисы). Мои контроллеры расширяют AbstractController от symfony/frameworkbundle
. Поэтому единственное, что я могу сейчас сделать, это:
Получить сервис из контейнера по $this->container->get('service_id')
, но если сервис в конструкторе будет иметь класс в качестве параметра
public function __constructor(SomeClass $someClass)
тогда я получаю это исключение:
Служба или псевдоним App \ V2 \ Service \ TestService была удалена или встроена во время компиляции контейнера. Вам следует либо сделать его общедоступным, либо прекратить использование контейнера напрямую и использовать вместо него внедрение зависимостей.
Если я изменю конфигурацию, чтобы сделать все службы общедоступными, то:
Слишком мало аргументов для функции APP \ V2 \ Service \ TestService :: __ construct (), 0 передано и ожидается ровно 1
Я готовлю суть, чтобы лучше понять, о чем я говорю:
https://gist.github.com/miedzwin/49bac1cc1d5270d3ba1bfcf700abf864
Может кто-нибудь немного помочь мне с реализацией DI с использованием компонентов Symfony (не Symfony framework)? Хорошего рабочего примера будет достаточно. Или просто, пожалуйста, оставьте свои замечания в моей сути, я пытаюсь это исправить.