Buenas prácticas oficiales de Symfony

3.1. Configuración relacionada con la infraestructura

Buena Práctica Define las opciones de configuración relacionadas con la infraestructura tecnológica en el archivo app/config/parameters.yml.

El archivo parameters.yml creado por defecto por Symfony sigue esta recomendación y define las opciones relacionadas con la base de datos y el servidor de correo:

# app/config/parameters.yml
parameters:
    database_driver:   pdo_mysql
    database_host:     127.0.0.1
    database_port:     ~
    database_name:     symfony
    database_user:     root
    database_password: ~

    mailer_transport:  smtp
    mailer_host:       127.0.0.1
    mailer_user:       ~
    mailer_password:   ~

    # ...

Estas opciones no se definen en el archivo app/config/config.yml porque no tienen nada que ver con el comportamiento de la aplicación. En otras palabras, a la aplicación le da exactamente igual dónde se encuentra la base de datos o cómo se accede a ella. Lo único que le importa es que haya una base de datos preparada.

3.1.1. Parámetros canónicos

Buena Práctica Define todos los parámetros de la aplicación en el archivo app/config/parameters.dist.yml.

Desde la versión 2.3 Symfony incluye un archivo de configuración llamado parameters.dist.yml, que almacena todos los parámetros de configuración que deben estar definidos en la aplicación para que ésta funcione correctamente. Estos parámetros se llaman parámetros canónicos de la aplicación (canonical parameters en inglés).

Cada vez que definas un nuevo parámetro de configuración para tu aplicación, no olvides añadirlo también a este archivo parameters.dist.yml y subir después los cambios al respositorio de código.

De esta manera, cada vez que un miembro del equipo de desarrollo actualice el proyecto o lo instale en producción, Symfony comprobará si el número de parámetros del archivo parameters.yml coincide con los parámetros definidos en parameters.yml.dist. Si existe cualquier diferencia, Symfony te preguntará qué valor quieres asignar a los parámetros que te faltan por definir y los añadirá al archivo parameters.yml. Así la aplicación nunca fallará porque le falte un parámetro de configuración.