Pongo el codigo de la clase para leer ficheros de configuración, vereis que es muy sencillo y fácil de leer.
class ConfigClass
{
public static $items = [];
public static function load( $filepath = [])
{
# Incluye el fichero de config que vamos a leer
# $filepath[0] es el directorio donde se encuentra, normalmente config
# $filepath[1] es el nombre del fichero
static::$items = include( dirname(__FILE__).'/' . $filepath[0] . '/' . $filepath[1] . '.php');
}
#
# Formato de los parametros de entrada: directorio.fichero.primer-parametro-del-array
public static function get( $params = null)
{
# Leemos los parametros de entrada y los divimos en
$input = explode('.', $params);
# Obtenemos los dos primeros valores el directorio y el fichero
$filepath[0] = $input[0];
$filepath[1] = $input[1];
unset( $input[0]);
unset( $input[1]);
# Y por ultimo obtenemos el primer parametro del array
$key = implode( '.', $input);
# Incluimos el fichero de configruaciones y lo cargamos directamente en un variable
static::load( $filepath);
if ( !empty( $key))
{
return static::$items[ $key];
}
return static::$items;
}
}
Hay poco que explicar de este codígo porque esta comentado lo que va haciendo, solo recordar que donde se incluye el fichero si cambias de directorio la clase tendreis que modificar este parámetro dirname(__FILE__) por el anidamiento que se requiera.
Ahora que tenemos la clase para leer ficheros de configuración definida vamos a crear la estructura de los ficheros de configuración que pueden ser tantos como queráis. En este ejemplo un fichero de configuración con los datos de conexión a la base de datos.
return [
# Datos conexión base de datos
'database' => [
'dsn' => 'mysql:host=localhost;dbname=default;charset=utf8mb4',
'username' => 'root',
'password' => 'root',
],
];
¿ Y como leemos este fichero de configuración ?. Primero en nuestro script incluimos la clase ConfigClass y después la utilizamos
require_once "ConfigClass.php";
$database_config = ConfigClass::get("config.database.default");
print_r( $database_config);
El resultado es:
Array
(
[dsn] => mysql:host=localhost;dbname=default;charset=utf8mb4
[username] => root
[password] => root
)
Si por ejemplo quisieramos obtener directamente un elemento de este array, el username, podriamos hacerlo de la siguiente forma
require_once "ConfigClass.php";
$database_config = ConfigClass::get("config.database.default")['username'];
print_r( $database_config);
De esta forma podemos tener tantos ficheros de configuración como queramos y cargarlos y extraer rapidamente valores de ellos.
Y esto es todo, y feliz programming
Saludos
Alex.
También puede interesarte:
Configurar Laravel Sail para utilizar un MySql externo existente |
||