Новое в Symfony 4.3: URL Env Var Processor

При использовании 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)%'