Clase singleton de configuración
Es una pequeña clase de configuración con un funcionamiento muy sencillo, implementa el patrón Singleton para mantener una única instancia y poder acceder a sus valores desde cualquier sitio.
La almacenamos en la carpeta **core** y la llamaremos **Config.php** (core/Config.php). El contenido de dicha clase será:
<?php
class Config
{
private $vars;
private static $instance;
private function __construct() {
$this->vars = array();
}
public function set($name, $value) {
if(!isset($this->vars[$name])) {
$this->vars[$name] = $value;
}
}
public function get($name) {
if(isset($this->vars[$name])) {
return $this->vars[$name];
}
}
public static function getInstance(){
if (!isset(self::$instance)) {
$class = __CLASS__; //otra forma
self::$instance = new $class();
}
return self::$instance;
}
}
/*
Uso:
$config = Config::getInstance();
$config->set('host', 'locahost');
echo $config->get('host'); //localhost
$config2 = Config::getInstance();
echo $config2->get('host'); //localhost
*/
Posteriormente tendremos un archivo de configuración **config.php** que hará uso de una instancia de la clase Config.
<?php
$config = Config::getInstance();
$config->set('CONTROLLERS_FOLDER', 'controllers/');
$config->set('MODELS_FOLDER', 'models/');
$config->set('VIEWS_FOLDER', 'views/');
$config->set('DEFAULT_CONTROLLER', 'libros');
$config->set('DEFAULT_ACTION', 'listar');
$config->set('dbhost', 'localhost');
$config->set('dbname', 'uazon');
$config->set('dbuser', 'comprador');
$config->set('dbpass', 'proweb2013');
Lo guardaremos al mismo nivel que **index.php**.