Publicidad

Clase para leer ficheros de configuración en PHP


Por Alex el 09/02/2022, Comentar el artículo

Comparte este artículo:      




Los ficheros de configuración son muy normales en todos los lenguas, ficheros en formato xml, yaml, json, etc ... los hay de todos los colores y para todos los gustos. En este artículo vamos a ver como leer ficheros de configuración con formato array de PHP.


Esta clase desarrollada en PHP originalmente la encontré en un foro de internet que no recuerdo cual y le hice algunas modificaciones para que fuera mas dinámica y aceptará mas parámetros.

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.



Si te ha gustado el artículo compartelo en:      




Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.