clases = array(); $this->dirs = array(); } public static function singleton() { if (!isset(self::$instance)) { $c = __CLASS__; self::$instance = new $c; } return self::$instance; } public function __clone() { throw new gvHidraException('Clone is not allowed.'); } function registerClass($clase, $ruta) { if (!empty($clase) and !empty($ruta)) $this->clases[$clase] = $ruta; } /** * Usando el set_include_path no hace falta acabar en / */ function registerFolder($dir) { if (!empty($dir) and !in_array($dir, $this->dirs)) { $this->dirs[] = $dir; } } /** * metodo llamado en __autoload * Si esta en la lista de clases la carga, y si no va probando si * esta en alguna de las carpetas registradas. */ function auto_load($class_name) { if (empty($class_name)) return; if (array_key_exists($class_name, $this->clases)) { require_once $this->clases[$class_name]; } else { $dirs = $this->dirs; if (empty($dirs)) { $dirs[] = self::DEFAULT_DIR; } foreach ($dirs as $dir) { //Clases $file = $dir.DIRECTORY_SEPARATOR.$class_name.'.php'; if (file_exists($file)) { require_once $file; break; } //Clases con Namespaces... $fileClassName = substr($class_name, strrpos($class_name, '\\')+1); $file = $dir.DIRECTORY_SEPARATOR.$fileClassName.'.php'; if (file_exists($file)) { require_once $file; break; } } } } } $al = GVHAutoLoad::singleton(); spl_autoload_register(array($al, 'auto_load')); ?>