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 //autoload hook -> refers to autoload class singleton
function __autoload_system($class_name) { function __autoload_system($class_name) {
return system\autoload::getInstance()->autoload($class_name); return system\autoload::autoload($class_name);
} }
//Register autoload //Register autoload
spl_autoload_register('__autoload_system'); spl_autoload_register('__autoload_system');
//Register system classes //Register system classes
$autoload = \SYSTEM\autoload::getInstance(); \SYSTEM\autoload::registerFolder(dirname(__FILE__).'/system','SYSTEM');
$autoload->registerFolder(dirname(__FILE__).'/system','SYSTEM');
$autoload->registerFolder(dirname(__FILE__).'/log/result','SYSTEM\LOG'); \SYSTEM\autoload::registerFolder(dirname(__FILE__).'/log/result','SYSTEM\LOG');
$autoload->registerFolder(dirname(__FILE__).'/log','SYSTEM\LOG'); \SYSTEM\autoload::registerFolder(dirname(__FILE__).'/log','SYSTEM\LOG');
$autoload->registerFolder(dirname(__FILE__).'/log/exceptions','SYSTEM\LOG'); \SYSTEM\autoload::registerFolder(dirname(__FILE__).'/log/exceptions','SYSTEM\LOG');
$autoload->registerFolder(dirname(__FILE__).'/log/error_handler','SYSTEM\LOG'); \SYSTEM\autoload::registerFolder(dirname(__FILE__).'/log/error_handler','SYSTEM\LOG');
$autoload->registerFolder(dirname(__FILE__).'/api','SYSTEM\API'); \SYSTEM\autoload::registerFolder(dirname(__FILE__).'/api','SYSTEM\API');
$autoload->registerFolder(dirname(__FILE__).'/page','SYSTEM\PAGE'); \SYSTEM\autoload::registerFolder(dirname(__FILE__).'/page','SYSTEM\PAGE');
$autoload->registerFolder(dirname(__FILE__).'/dbd/tbl/','SYSTEM\DBD'); \SYSTEM\autoload::registerFolder(dirname(__FILE__).'/dbd/tbl/','SYSTEM\DBD');
$autoload->registerFolder(dirname(__FILE__).'/db','SYSTEM\DB'); \SYSTEM\autoload::registerFolder(dirname(__FILE__).'/db','SYSTEM\DB');
$autoload->registerFolder(dirname(__FILE__).'/db/dbinfo','SYSTEM\DB'); \SYSTEM\autoload::registerFolder(dirname(__FILE__).'/db/dbinfo','SYSTEM\DB');
$autoload->registerFolder(dirname(__FILE__).'/db/connection','SYSTEM\DB'); \SYSTEM\autoload::registerFolder(dirname(__FILE__).'/db/connection','SYSTEM\DB');
$autoload->registerFolder(dirname(__FILE__).'/db/result','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 <?php
\SYSTEM\autoload::getInstance()->registerFolder(dirname(__FILE__).'/exceptions_shortcut',''); \SYSTEM\autoload::registerFolder(dirname(__FILE__).'/exceptions_shortcut','');

View File

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

View File

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

View File

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