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**.

results matching ""

    No results matching ""