Конфигурация конкретных сервисов среды в Symfony 3.4 - PullRequest
0 голосов
/ 17 октября 2018

Мне нужно получить доступ к некоторым частным сервисам через контейнер, находясь в среде dev.

Я подумал, что это будет просто - я бы просто сделал их общедоступными специально для dev, вот так:

app / config / services.yml:

services:
    _defaults:
        autowire: true
        autoconfigure: true
        public: false

    MyBundle\:
        resource: '../../*'
        exclude: '../../{Entity,Repository,DoctrineMigrations,DependencyInjection,Tests,Util}'

app / config / services_dev.yml:

imports:
- { resource: services.yml }

services:
  _defaults:
    autowire: true
    autoconfigure: true
    public: true

app / config / config_dev.yml

imports:
    - { resource: config.yml }
    - { resource: services_dev.yml }

Это, однако, не дает желаемого результата: службы ведут себя как частные, config вообще не объединяется (например, когда у вас есть параметринъекция, sy кричит, что я должен определить их явно, даже если родительский конфиг уже делает).

В конфигурации по умолчанию Sy много примеров, когда определенные параметры переопределяются для различных сред, но для некоторыхПричина, по-видимому, не относится к услугам.Конфигурация служб обрабатывается каким-то особым образом?Я что-то не так понял?Что здесь происходит?

PS Я знаю о внедрении зависимостей, я знаю, что доступ к контейнеру считается плохой практикой, но это не главное.Пожалуйста, не предлагайте это.

1 Ответ

0 голосов
/ 17 октября 2018

Это не работает, потому что ваши настройки по умолчанию работают только на сервисах, определенных в вашем services_dev.yaml.Сюда не входит импорт.

Вы можете попробовать services_dev.yaml следующим образом:

services:
    _defaults:
        autowire: true
        autoconfigure: true
        public: true

    MyBundle\Services\MyPublicService: ~

Это перезапишет сервис и сделает его общедоступным.Очевидно, вы должны заменить класс фактическим сервисом.

Вам не нужно импортировать другие сервисы.Ядро позаботится о загрузке этого класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...