function __autoload($className) { if (function_exists('smartyAutoload') and smartyAutoload($className)) { return true; } $className = str_replace(chr(0), '', $className); $classDir = dirname(__FILE__) . '/../classes/'; $overrideDir = dirname(__FILE__) . '/../override/classes/'; $file_in_override = file_exists($overrideDir . $className . '.php'); $file_in_classes = file_exists($classDir . $className . '.php'); // This is a Core class and its name is the same as its declared name if (substr($className, -4) == 'Core') { require_once $classDir . substr($className, 0, -4) . '.php'; } else { if ($file_in_override && $file_in_classes) { require_once $classDir . str_replace(chr(0), '', $className) . '.php'; require_once $overrideDir . $className . '.php'; } elseif (!$file_in_override && $file_in_classes) { require_once $classDir . str_replace(chr(0), '', $className) . '.php'; $classInfos = new ReflectionClass($className . ((interface_exists($className, false) or class_exists($className, false)) ? '' : 'Core')); if (!$classInfos->isInterface() && substr($classInfos->name, -4) == 'Core') { eval(($classInfos->isAbstract() ? 'abstract ' : '') . 'class ' . $className . ' extends ' . $className . 'Core {}'); } } elseif ($file_in_override && !$file_in_classes) { require_once $overrideDir . $className . '.php'; } } }
function __autoload($className) { if (!class_exists($className, false)) { if (function_exists('smartyAutoload') and smartyAutoload($className)) { return true; } if (file_exists(dirname(__FILE__) . '/../classes/' . $className . '.php')) { require_once dirname(__FILE__) . '/../classes/' . str_replace(chr(0), '', $className) . '.php'; $coreClass = new ReflectionClass($className . (interface_exists($className, false) ? '' : 'Core')); if (!$coreClass->isInterface()) { if (file_exists(dirname(__FILE__) . '/../override/classes/' . $className . '.php')) { require_once dirname(__FILE__) . '/../override/classes/' . $className . '.php'; } else { eval(($coreClass->isAbstract() ? 'abstract ' : '') . 'class ' . $className . ' extends ' . $className . 'Core {}'); } } } else { return; } } }
private static function _loadClass($className) { $appRoot = SERVER_ROOT . "app/" . $GLOBALS['APP_NAME']; $filePath = explode('_', $className); switch (array_shift($filePath)) { case 'Action': $nextDir = '/action/'; break; case 'Data': $nextDir = '/model/data/'; break; case 'Service': $nextDir = '/model/service/'; break; case 'Vera': $appRoot = SERVER_ROOT; $nextDir = '/tools/'; break; case 'Smarty': return smartyAutoload($className); //使用Smarty自带的Autoload函数加载Smarty引擎相关的类 break; case 'View': $nextDir = '/view/'; break; case 'Library': $nextDir = '/library/'; break; default: Vera_Log::addErr('unknown classname ' . $className); exit; } $classPath = $appRoot . $nextDir; $file = array_pop($filePath); if (count($filePath) != 0) { foreach ($filePath as $each) { $classPath .= strtolower($each) . "/"; } } $classPath .= $file . ".php"; if (file_exists($classPath)) { include_once $classPath; } else { Vera_Log::addErr($className . ' not found'); Vera_Log::addNotice('classPath', $classPath); return false; } }