Uso de las variables de entorno en PHP como modo de poder personalizar las configuraciones de nuestras aplicaciones por entornos sin tener que andar a gestionar ficheros PHP de configuración almacenados en repositorios etc.
3. En una galaxia muy lejana...
<?php
/**
* Configuración base de datos
*/
$dbname = 'adfadf';
$dbuser = 'adfadf';
$dbpassword = '123456';
$dbhost = 'localhost';
Meetups
4. … bueno… igual no tan lejana ...
Meetups
<?php
/**
* Configuración básica de WordPress 4.9.2
*/
define('DB_NAME', 'adfadfa');
define('DB_USER', 'adfadfa');
define('DB_PASSWORD','123456');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');
[...]
$table_prefix = 'wp_';
define('WP_DEBUG', false);
/* ¡Eso es todo, deja de editar! Feliz blogging */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . 'wp-settings.php');
5. Problemas de estos ficheros de configuración
Meetups
● El fichero tiene que modificarse en cada entorno (local, desarrollo, pre-producción, producción)
● Como es un **** decides que tu repositorio ignore el fichero de configuración
● Como no tienes fichero de configuración en tu entorno, tienes que tener uno de ejemplo
● Como tengas varios servicios integrado y cada uno con su fichero de configuración… el caos
está servido.
6. La solución: Variables de entorno
Meetups
Las variables de entorno son aquellas que están
asociadas al espacio de nombres global de PHP.
Consecuencia: No se crean en tu aplicación,
sino que le vienen dadas “desde fuera”.
11. Vance Lucas… tu phpdotenv nos da la vida
Meetups
● “Loads environment variables from .env to getenv()”
● “A PHP version of the original Ruby dotenv.” (https://github.com/bkeepers/dotenv)
● COMPATIBLE with PHP's built-in web server and CLI runner.
● Es inmutable. Salvo que le digas lo contrario, respeta las variables de entorno existentes.
● Puedes requerir la existencia de determinadas variables de entorno.
● Puedes requerir la existencia de determinadas opciones o drivers en tu entorno.
● Puedes obligar que determinadas variables de entorno no estén vacías.
● Puedes obligar que determinadas variables de entorno sean integers.
● En resumen: Su opciones y generación de excepciones pueden servir de documentación “al
vuelo” cuando configuras tu entorno local.