Symfony4 - отказаться от функции переменных среды и сохранить старый файл parameters.yml?

В Symfony4 они решили заменить parameters.yml переменными среды, как сказано в документах и в руководствах по миграции:

Определите параметры конфигурации, связанные с инфраструктурой, как переменные среды. Во время разработки используйте файл .env в корне вашего проекта, чтобы установить их.

Мне очень не нравится это изменение, я не вижу никаких преимуществ, а только недостатки (например, нам нужно будет провести рефакторинг приложения, потому что теперь в качестве переменных среды разрешены только скалярные значения, вы не можете размещать разные установки в та же среда и т. д.)

Итак, мой вопрос: можно ли сохранить старый добрый файл parameters.yml в Symfony4? Как я могу включить этот файл и ссылаться на его параметры, например, в doctrine.yml и swiftmailer.yml?


person the_nuts    schedule 21.01.2018    source источник
comment
Взгляните на src/Kernel.php::configureContainer(). Вы увидите довольно странную строку, загружающую config/services.yaml. Скопируйте/вставьте его и добавьте к нему параметры .yaml. С другой стороны, люди, разработавшие Symfony, довольно умны. Возможно, захочется плыть по течению.   -  person Cerad    schedule 21.01.2018


Ответы (1)


Готово, это очень просто, и это значительно упрощает ваш переход на Symfony4.

Просто переместите parameters.yml и parameters.yml.dist в config/ и переименуйте их в .yaml для согласованности.

Затем добавьте в services.yaml:

imports:
    - { resource: parameters.yaml }

Далее все останется по прежнему, например файл доктрины.yaml будет такой:

doctrine:
    dbal:
        driver: 'pdo_mysql'
        server_version: '5.7'
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        ...

Необязательно: добавьте https://github.com/Incenteev/ParameterHandler.

person the_nuts    schedule 21.01.2018
comment
Использование dot env также раскрывает пароли, например: github.com/symfony/symfony/issues/26093 - person Superbiji; 18.04.2018