/** * Provides auto loading feature. To be used with the Magic method __autoload * @param string $classname Class name to be loaded. */ public static function autoload($classname) { // if( class_exists($classname, false) === true ) // return; //app $class['DooConfig'] = 'app/DooConfig'; $class['DooSiteMagic'] = 'app/DooSiteMagic'; $class['DooWebApp'] = 'app/DooWebApp'; //auth $class['DooAcl'] = 'auth/DooAcl'; $class['DooAuth'] = 'auth/DooAuth'; $class['DooDigestAuth'] = 'auth/DooDigestAuth'; $class['DooRbAcl'] = 'auth/DooRbAcl'; //cache $class['DooApcCache'] = 'cache/DooApcCache'; $class['DooEAcceleratorCache'] = 'cache/DooEAcceleratorCache'; $class['DooFileCache'] = 'cache/DooFileCache'; $class['DooFrontCache'] = 'cache/DooFrontCache'; $class['DooMemCache'] = 'cache/DooMemCache'; $class['DooPhpCache'] = 'cache/DooPhpCache'; $class['DooXCache'] = 'cache/DooXCache'; //controller $class['DooController'] = 'controller/DooController'; //db $class['DooDbExpression'] = 'db/DooDbExpression'; $class['DooMasterSlave'] = 'db/DooMasterSlave'; $class['DooModel'] = 'db/DooModel'; $class['DooModelGen'] = 'db/DooModelGen'; $class['DooSmartModel'] = 'db/DooSmartModel'; $class['DooSqlMagic'] = 'db/DooSqlMagic'; //db/manage $class['DooDbUpdater'] = 'db/manage/DooDbUpdater'; $class['DooManageDb'] = 'db/manage/DooManageDb'; $class['DooManageMySqlDb'] = 'db/manage/adapters/DooManageMySqlDb'; $class['DooManagePgSqlDb'] = 'db/manage/adapters/DooManagePgSqlDb'; $class['DooManageSqliteDb'] = 'db/manage/adapters/DooManageSqliteDb'; //helper $class['DooBenchmark'] = 'helper/DooBenchmark'; $class['DooFile'] = 'helper/DooFile'; $class['DooFlashMessenger'] = 'helper/DooFlashMessenger'; $class['DooForm'] = 'helper/DooForm'; $class['DooGdImage'] = 'helper/DooGdImage'; $class['DooMailer'] = 'helper/DooMailer'; $class['DooPager'] = 'helper/DooPager'; $class['DooRestClient'] = 'helper/DooRestClient'; $class['DooTextHelper'] = 'helper/DooTextHelper'; $class['DooTimezone'] = 'helper/DooTimezone'; $class['DooUrlBuilder'] = 'helper/DooUrlBuilder'; $class['DooValidator'] = 'helper/DooValidator'; //logging $class['DooLog'] = 'logging/DooLog'; //session $class['DooCacheSession'] = 'session/DooCacheSession'; $class['DooSession'] = 'session/DooSession'; //translate $class['DooTranslator'] = 'translate/DooTranslator'; //uri $class['DooLoader'] = 'uri/DooLoader'; $class['DooUriRouter'] = 'uri/DooUriRouter'; //view $class['DooView'] = 'uri/DooView'; $class['DooViewBasic'] = 'uri/DooViewBasic'; if (isset($class[$classname])) { self::loadCore($class[$classname]); } else { if (isset(Doo::conf()->PROTECTED_FOLDER_ORI) === true) { $path = Doo::conf()->SITE_PATH . Doo::conf()->PROTECTED_FOLDER_ORI; } else { $path = Doo::conf()->SITE_PATH . Doo::conf()->PROTECTED_FOLDER; } if (empty(Doo::conf()->AUTOLOAD) === false) { if (Doo::conf()->APP_MODE == 'dev') { $includeSub = Doo::conf()->AUTOLOAD; $rs = array(); foreach ($includeSub as $sub) { if (file_exists($sub) === false) { if (file_exists($path . $sub) === true) { $rs = array_merge($rs, DooFile::getFilePathList($path . $sub . '/')); } } else { $rs = array_merge($rs, DooFile::getFilePathList($sub . '/')); } } $autoloadConfigFolder = $path . 'config/autoload/'; $rsExisting = null; if (file_exists($autoloadConfigFolder . 'autoload.php') === true) { $rsExisting = (include $autoloadConfigFolder . 'autoload.php'); } if ($rs != $rsExisting) { if (!file_exists($autoloadConfigFolder)) { mkdir($autoloadConfigFolder); } file_put_contents($autoloadConfigFolder . 'autoload.php', '<?php return ' . var_export($rs, true) . ';'); } } else { if (isset(self::$_autoloadClassMap) === false) { $rs = self::$_autoloadClassMap = (include_once $path . 'config/autoload/autoload.php'); } else { $rs = self::$_autoloadClassMap; } } if (isset($rs[$classname . '.php']) === true) { require_once $rs[$classname . '.php']; return; } } //autoloading namespaced class if (isset(Doo::conf()->APP_NAMESPACE_ID) === true && strpos($classname, '\\') !== false) { $pos = strpos($classname, Doo::conf()->APP_NAMESPACE_ID); if ($pos === 0) { $classname = str_replace('\\', '/', substr($classname, strlen(Doo::conf()->APP_NAMESPACE_ID) + 1)); require_once $path . $classname . '.php'; } } } }