Symfony está preparado para trabajar con diferentes entornos. Los entornos comparten la misma configuración y el mismo código, sin embargo, no tienen el mismo comportamiento.

Por defecto Symfony presenta tres entornos diferentes. Estos entornos se denominan:

  • dev
  • prod
  • test

Para acceder al entorno dev o prod, es necesario introducir en la URL el front-controller que vas a utilizar. app.php es el controller en producción y app_dev.php es el controller en desarrollo. Nuestras URLs quedarían así:

http://localhost/web/app.php/hola-mundo

http://localhost/web/app_dev.php/hola-mundo

La diferencia sustancial entre un entorno de producción y otro es el uso de caches, que en el modo prod si se usa y en el modo dev no. Es una cuestión de comodidad para el desarrollador.

Puede ser que necesites borrar las caches durante todo el proceso de desarrollo. En este caso, lee en esta entrada como borrar la cache de symfony.

Crear un entorno en Symfony

Para crear un entorno en Symfony es necesario tener dos cosas:

  • Un archivo de configuración para el entorno
  • Un front-controller que lo resuelva

Supongamos que vamos a crear un entorno llamado analiticas. Para proceder a esto, debemos de crear el archivo de configuración:

/app/config/config_analiticas.yml

Y el front-controller:

/web/app_analiticas.php

El fichero de configuración

La mejor forma de ver para que es cada entorno, es mirar como es el fichero de configuración

Todo parte del fichero de configuración global /app/config/config.yml. Si observamos el fichero de configuración config_dev.yml o config_prod.yml, todos empiezan con la sentencia:

imports:
- { resource: config.yml }

Es decir, que el fichero de configuración del entorno, amplia la configuración ya definida en el fichero global.

El fichero para front-controller

La mecánica es la misma que con el archivo de configuración. Si miramos el código de los front-controller de ambos entornos de trabajo, veremos que son muy similares. Difieren en que activan algunos parámetros de configuración distintos.

Nos bastaría como punto de partida, copiar uno de ellos, renombrarlo con nuestro entorno de trabajo (app_analiticas.php) y modificar la siguiente línea, cambiando «prod» por «analiticas«:

$kernel = new AppKernel('prod', false);

A partir de este punto, nuestro código sería accesible desde una URL similar a la siguiente:

http://localhost/web/app_analiticas.php/hola-mundo