Variables de entorno y configuración en laravel

Author
By Darío Rivera
Posted on 2019-07-05 in Laravel
Tags   Laravel 5.8

Las variables de configuración sirven para definir valores que son globales y que pueden cambiar según se instale la aplicación en un entorno u otro. Laravel posee un estructurado sistema de configuración que se compone básicamente de todos los archivos que puedas encontrar dentro de la carpeta /config, el archivo .env (DotEnv PHP by Vance Lucas) y algunos helpers como config y env.

Variables en el archivo .env

Para definir las variables en el archivo .env basta con utilizar la siguiente sintaxis

NOMBRE=VALOR

Si el valor es una cadena separada por espacios deberá utilizarse doble entrecomilado.

NOMBRE="VALOR CON ESPACIOS"

La función que se utiliza para obtener los valores de las variables en el archivo .env es el helper env, el cuál toma como primer parámetro el nombre de la variable definida y como segundo parámetro un valor por defecto en caso de que la variable no exista. Este helper, que no es más que una función de PHP definida globalmente, puede ser utilizado en archivos de configuración o en cualquier controlador o modelo de la aplicación.

env('NOMBRE', 'valor por defecto');

Variables en archivos de configuración

Las variables en los archivos de configuración no utilizan DotEnv, por lo cual son archivos simples de PHP que retornan un array con pares de claves y valores. Sin embargo, es muy común en estos archivos hacer referencia a valores del archivo de configuración .env, veamos por ejemplo la definición del nombre de la aplicación en el archivo config/app.php.

return [

    /*
    |--------------------------------------------------------------------------
    | Application Name
    |--------------------------------------------------------------------------
    |
    | This value is the name of your application. This value is used when the
    | framework needs to place the application's name in a notification or
    | any other location as required by the application or its packages.
    |
    */

    'name' => env('APP_NAME', 'Laravel'),
    ...

Como puedes ver está claramente definido el valor name que apunta al valor que tendría la variable APP_NAME en el archivo .env. Este esquema de configuración sirve enlazar las variables de configuración de /config con los valores particulares del archivo .env, dado que resulta más cómodo editar un archivo que use DotEnv que un archivo PHP.

La función que se utiliza para obtener los valores de las variables en los archivos de configuración es el helper config, la cual toma como primer párametro el path del archivo de configuración utilizando el caractér punto como separador de directorios. Este helper al igual que env pueden utilizarse en cualquier controlador o modelo de la aplicación.  A continuación vemos un ejemplo de cómo se obtendría el nombre de la aplicación desde la configuración.

$appName = config('app.name');

Una ventaja de utilizar las variables directamente de los archivos de configuración y no del archivo .env es que se puede modificar en tiempo de ejecución el valor de una variable.

config(['app.timezone' => 'America/Chicago']);

Como última recomendación debe tenerse siempre en cuenta que estas variables pueden ser sobreescritas por variables a nivel de servidor o sistema. Hasta pronto!.


Si te ha gustado este artículo puedes invitarme a tomar una taza de café

Acerca de Darío Rivera

Author

Ingeniero de desarrollo en PlacetoPay , Medellín. Darío ha trabajado por más de 6 años en lenguajes de programación web especialmente en PHP. Creador del microframework DronePHP basado en Zend y Laravel.

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.