autoload is not a singleton anymore but a static class allowing an easier call

This commit is contained in:
Ulf Gebhardt 2013-08-01 14:57:46 +02:00
parent 45c3939c57
commit 83340f4993
5 changed files with 47 additions and 60 deletions

View File

@ -5,34 +5,33 @@ require_once dirname(__FILE__).'/system/autoload.php';
//autoload hook -> refers to autoload class singleton
function __autoload_system($class_name) {
return system\autoload::getInstance()->autoload($class_name);
return system\autoload::autoload($class_name);
}
//Register autoload
spl_autoload_register('__autoload_system');
//Register system classes
$autoload = \SYSTEM\autoload::getInstance();
$autoload->registerFolder(dirname(__FILE__).'/system','SYSTEM');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/system','SYSTEM');
$autoload->registerFolder(dirname(__FILE__).'/log/result','SYSTEM\LOG');
$autoload->registerFolder(dirname(__FILE__).'/log','SYSTEM\LOG');
$autoload->registerFolder(dirname(__FILE__).'/log/exceptions','SYSTEM\LOG');
$autoload->registerFolder(dirname(__FILE__).'/log/error_handler','SYSTEM\LOG');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/log/result','SYSTEM\LOG');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/log','SYSTEM\LOG');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/log/exceptions','SYSTEM\LOG');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/log/error_handler','SYSTEM\LOG');
$autoload->registerFolder(dirname(__FILE__).'/api','SYSTEM\API');
$autoload->registerFolder(dirname(__FILE__).'/page','SYSTEM\PAGE');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/api','SYSTEM\API');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/page','SYSTEM\PAGE');
$autoload->registerFolder(dirname(__FILE__).'/dbd/tbl/','SYSTEM\DBD');
$autoload->registerFolder(dirname(__FILE__).'/db','SYSTEM\DB');
$autoload->registerFolder(dirname(__FILE__).'/db/dbinfo','SYSTEM\DB');
$autoload->registerFolder(dirname(__FILE__).'/db/connection','SYSTEM\DB');
$autoload->registerFolder(dirname(__FILE__).'/db/result','SYSTEM\DB');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/dbd/tbl/','SYSTEM\DBD');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/db','SYSTEM\DB');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/db/dbinfo','SYSTEM\DB');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/db/connection','SYSTEM\DB');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/db/result','SYSTEM\DB');
$autoload->registerFolder(dirname(__FILE__).'/security','SYSTEM\SECURITY');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/security','SYSTEM\SECURITY');
$autoload->registerFolder(dirname(__FILE__).'/config','SYSTEM\CONFIG');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/config','SYSTEM\CONFIG');
$autoload->registerFolder(dirname(__FILE__).'/cache','SYSTEM\CACHE');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/cache','SYSTEM\CACHE');
$autoload->registerFolder(dirname(__FILE__).'/sai','SYSTEM\SAI');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/sai','SYSTEM\SAI');

View File

@ -1,2 +1,2 @@
<?php
\SYSTEM\autoload::getInstance()->registerFolder(dirname(__FILE__).'/exceptions_shortcut','');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/exceptions_shortcut','');

View File

@ -1,2 +1,2 @@
<?php
\SYSTEM\autoload::getInstance()->registerFolder(dirname(__FILE__).'/result_shortcut','');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/result_shortcut','');

View File

@ -1,21 +1,19 @@
<?php
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/sai','SYSTEM\SAI');
$autoload = SYSTEM\autoload::getInstance();
$autoload->registerFolder(dirname(__FILE__).'/sai','SYSTEM\SAI');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/page','SYSTEM\SAI');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/page/default_page','SYSTEM\SAI');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/page/default_module','SYSTEM\SAI');
$autoload->registerFolder(dirname(__FILE__).'/page','SYSTEM\SAI');
$autoload->registerFolder(dirname(__FILE__).'/page/default_page','SYSTEM\SAI');
$autoload->registerFolder(dirname(__FILE__).'/page/default_module','SYSTEM\SAI');
$autoload->registerFolder(dirname(__FILE__).'/modules','SYSTEM\SAI');
$autoload->registerFolder(dirname(__FILE__).'/modules/saimod_sys_sai','SYSTEM\SAI');
$autoload->registerFolder(dirname(__FILE__).'/modules/saimod_sys_login','SYSTEM\SAI');
$autoload->registerFolder(dirname(__FILE__).'/modules/saimod_sys_log','SYSTEM\SAI');
$autoload->registerFolder(dirname(__FILE__).'/modules/saimod_sys_security','SYSTEM\SAI');
$autoload->registerFolder(dirname(__FILE__).'/modules/saimod_sys_mod','SYSTEM\SAI');
$autoload->registerFolder(dirname(__FILE__).'/modules/saimod_sys_config','SYSTEM\SAI');
$autoload->registerFolder(dirname(__FILE__).'/modules/saimod_sys_calls','SYSTEM\SAI');
$autoload->registerFolder(dirname(__FILE__).'/modules/saimod_sys_locale','SYSTEM\SAI');
$autoload->registerFolder(dirname(__FILE__).'/modules/saimod_sys_cache','SYSTEM\SAI');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/modules','SYSTEM\SAI');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/modules/saimod_sys_sai','SYSTEM\SAI');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/modules/saimod_sys_login','SYSTEM\SAI');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/modules/saimod_sys_log','SYSTEM\SAI');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/modules/saimod_sys_security','SYSTEM\SAI');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/modules/saimod_sys_mod','SYSTEM\SAI');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/modules/saimod_sys_config','SYSTEM\SAI');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/modules/saimod_sys_calls','SYSTEM\SAI');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/modules/saimod_sys_locale','SYSTEM\SAI');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/modules/saimod_sys_cache','SYSTEM\SAI');
require_once dirname(__FILE__).'/modules/register_modules.php';

View File

@ -4,26 +4,16 @@ namespace SYSTEM;
class autoload {
private $files = array(); // array(class, namespace, file)
private $folders = array(); // array(namespace, folder)
private static $files = array(); // array(class, namespace, file)
private static $folders = array(); // array(namespace, folder)
//SINGLETON!
static private $instance = null;
static public function getInstance(){
if (null === self::$instance) {
self::$instance = new self;}
return self::$instance;
}
private function __construct(){}
private function __clone(){}
private function getClassFromFile($file){
private static function getClassFromFile($file){
$path_info = \pathinfo($file);
return $path_info['filename'];
}
private function getClassNamespaceFromClass($class){
private static function getClassNamespaceFromClass($class){
$path_info = \pathinfo($class);
$lastslash = \strrpos($class, 92);
@ -37,15 +27,15 @@ class autoload {
\substr($class, 0, $lastslash));
}
private function autoload_($class, $namespace = ''){
foreach($this->files as $file){
private static function autoload_($class, $namespace = ''){
foreach(self::$files as $file){
if(strtolower($file[0]) == strtolower($class) &&
strtolower($file[1]) == strtolower($namespace)){
require_once $file[2];
return true;}
}
foreach($this->folders as $folder){
foreach(self::$folders as $folder){
if(strtolower($folder[0]) == strtolower($namespace) &&
is_file($folder[1].'/'.$class.'.php')){
require_once $folder[1].'/'.$class.'.php';
@ -55,23 +45,23 @@ class autoload {
return false;
}
public function registerFile($file, $namespace = ''){
public static function registerFile($file, $namespace = ''){
if(!is_file($file)){
throw new \Exception('File not found on registerFile for Autoload: '.$file);}
$this->files[] = array($this->getClassFromFile($file), $namespace, $file);
self::$files[] = array(self::getClassFromFile($file), $namespace, $file);
}
public function registerFolder($folder, $namespace = ''){
public static function registerFolder($folder, $namespace = ''){
if(!is_dir($folder)){
throw new \Exception('Folder not found on registerFolder for Autoload: '.$folder);}
$this->folders[] = array($namespace, $folder);
self::$folders[] = array($namespace, $folder);
}
public function autoload($class){
$classns = $this->getClassNamespaceFromClass($class);
public static function autoload($class){
$classns = self::getClassNamespaceFromClass($class);
return $this->autoload_($classns[0],$classns[1]);
return self::autoload_($classns[0],$classns[1]);
}
}