Example #1
0
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';
        }
    }
}
Example #2
0
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;
        }
    }
}
Example #3
0
 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;
     }
 }