установить класс обслуживания из .env или ENV в системе - PullRequest
0 голосов
/ 31 мая 2018

У меня есть настройка Symfony 4

в services.yml У меня есть следующая настроенная служба

MyCompany\Interfaces\QueueProducerInterface:
  class: MyCompany\Service\KafkaProducer
  arguments:
     $queueConfig: '@queue_config'

Я хочу динамически изменить настройку в моем файле .env, чтобы я могвведите его позже, в зависимости от env (dev, production) .... поэтому я попробовал что-то вроде этого:

в .env

QUEUE_DRIVER="MyCompany\Service\KafkaProducer"

, а теперь в services.yaml

    MyCompany\Interfaces\QueueProducerInterface:
#      class: MyCompany\Service\KafkaProducer
      class: '.%env(QUEUE_DRIVER)%'
      arguments:
         $queueConfig: '@queue_config'

но когда я запускаю, например, composer update, я получаю ошибку контейнера

Script cache:clear returned with error code 1
!!
!!  In Compiler.php line 112:
!!
!!    Incompatible use of dynamic environment variables "QUEUE_DRIVER" found in p
!!    arameters.
!!
!!
!!  In AbstractRecursivePass.php line 123:
!!
!!    Invalid service "MyCompany\Interfaces\QueueProducerInterface": class ".%env(
!!    QUEUE_DRIVER)%" does not exist.
!!
!!

как мне решить эту проблему?или лучше сказать, как я могу установить значение этого класса динамически в зависимости от ENV.

1 Ответ

0 голосов
/ 31 мая 2018

Я решил, создав services.yaml внутри папки config/packages/dev/, а также `config / packages / prod / 'с различными настройками.

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