Nuevo en Symfony 4.3: Procesado de URLs en variables de entorno

Cuando se utilizan variables de entorno para configurar aplicaciones Symfony resulta común usar URLs para definir valores de tipo DSN como el siguiente:

# .env
MONGODB_URL="mongodb://db_user:[email protected]:27017/db_name"

Sin embargo, a veces tienes que acceder a alguna parte de la URL para definir el valor de otras opciones (por ejemplo, el número del puerto o el nombre de la base de datos). En Symfony 4.3 hemos añadido dos nuevos procesadores de variables de entorno llamados url y query_string que te pueden ayudar en esos casos.

El procesador url parsea la URL guardada en la variable de entorno indicada y devuelve un array asociativo con sus partes, por lo que puedes combinarlo con el procesador key:

# 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)%'

El procesador query_string parsea la parte de la query string de la URL y devuelve un array asociativo con sus parámetros y valores, por lo que en este caso también puedes combinarlo con el procesador key. Si la variable de entorno es la siguiente:

# .env
MONGODB_URL="mongodb://db_user:[email protected]:27017/db_name?timeout=3000"

Puedes obtener el valor del parámetro timeout de la query string de la siguiente manera:

# config/packages/mongodb.yaml
mongo_db_bundle:
    clients:
        default:
            # ...
            connectTimeoutMS: '%env(int:key:timeout:query_string:MONGODB_URL)%'

Esta funcionalidad fue contribuida por Jérémy Derussé en el pull request #28975.

Fuente: New in Symfony 4.3: URL Env Var Processor

Comentarios

Publicada el

7 de mayo de 2019

Etiquetas

Proyectos Symfony destacados

La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más

Descargas totales de Symfony

3.408.501.808

Ver descargas en tiempo real

Síguenos en @symfony_es para acceder a las últimas noticias.