Расширение ContainerAware
не предоставляет автоматически доступ к контейнеру службы - вам нужно внедрить контейнер в ваш класс.Есть два способа сделать это:
- Если ваш класс зарегистрирован как сервис, вы можете ввести
@service_container
- Если ваш класс не является сервисом, но к нему обращаютсяиз класса, который имеет доступ к контейнеру (например, к контроллеру), вы можете явно вызвать
setContainer()
При этом вы не должны внедрять контейнер в ваши классы .Это затрудняет проверку ваших классов.Есть несколько исключений из этого, но они встречаются не часто.
Вместо этого вам следует вводить только те услуги, которые вам нужны.В случае менеджера сущностей, вы должны внедрить @doctrine.orm.default_entity_manager
.
Что касается доступа к данным из config.yml, я бы предложил включить файл (который может быть сделан при определении службы) и синтаксический анализyml, используя Symfony\Component\Yaml\Parser
или Symfony\Component\Yaml\Yaml
.Синтаксические анализаторы преобразуют строку yml в переменную PHP, с которой затем можно легко работать.