При использовании env vars для настройки Symfony обычно используют URL-адреса для определения значения параметров конфигурации, подобных DSN, например:
# .env
MONGODB_URL="mongodb://db_user:db_password@127.0.0.1:27017/db_name"
Однако иногда вам необходимо получить доступ к некоторым частям URL-адреса (например, к имени базы данных или номеру порта), чтобы определить значение других параметров. В Symfony 4.3 добавили два новых процессора для переменных окружения (url
и query_string
) для этого.
Процессор url анализирует данный URL и возвращает ассоциативный массив с его компонентами, поэтому вы можете объединить его с ключевым процессором:
# config/packages/mongodb.yaml
mongo_db_bundle:
clients:
default:
# ...
username: '%env(key:user:url:MONGODB_URL)%'
password: '%env(key:pass:url:MONGODB_URL)%'
connections:
default:
database_name: '%env(key:path:url:MONGODB_URL)%'
Процессор query_string
анализирует часть строки запроса данного URL и возвращает ассоциативный массив с его компонентами, так что вы также можете объединить его с ключевым процессором. Если переменная окружения определена так:
# .env
MONGODB_URL="mongodb://db_user:db_password@127.0.0.1:27017/db_name?timeout=3000"
Вы можете получить значение параметра timeout
строки запроса следующим образом:
# config/packages/mongodb.yaml
mongo_db_bundle:
clients:
default:
# ...
connectTimeoutMS: '%env(int:key:timeout:query_string:MONGODB_URL)%'