function _loadGatherCache($cacheName) { static $_cacheNames = null; $cacheName = strtolower($cacheName); if (!isset($_cacheNames[$cacheName])) { $filePath = R_P . "lib/gather/gathercache/" . $cacheName . ".cache.php"; if (!is_file($filePath)) { return false; } # pack class start $className = 'GatherCache_' . $cacheName . '_Cache'; $filePath = pwPack::classPath($filePath, $className); # pack class end require_once S::escapePath($filePath); #$className = 'GatherCache_' . $cacheName . '_Cache'; if (!class_exists($className)) { return false; } $_cacheNames[$cacheName] =& new $className(); } return $_cacheNames[$cacheName]; }
function _loadClass($className, $dir = '', $isGetInstance = true, $classPrefix = 'PW_') { static $classes = array(); $dir = PW_BaseLoader::_formatDir($dir); $classToken = $isGetInstance ? $className : $dir . $className; //避免重名 if (isset($classes[$classToken])) { return $classes[$classToken]; } $classes[$classToken] = true; //默认值 $fileDir = R_P . $dir . strtolower($className) . '.class.php'; if (!$isGetInstance) { return @(require_once S::escapePath($fileDir)); } //未实例化的直接返回 $class = $classPrefix . $className; if (!class_exists($class)) { # pack class start if ($GLOBALS['db_classfile_compress']) { $_directory = explode('/', $dir); if (isset($_directory[1]) && in_array($_directory[1], array('framework', 'gather', 'forum', 'job', 'rate', 'site', 'user', 'utility'))) { $fileDir = pwPack::classPath($fileDir, $class); } } # pack class end if (file_exists($fileDir)) { require_once S::escapePath($fileDir); } if (!class_exists($class)) { //再次验证是否存在class $GLOBALS['className'] = $class; Showmsg('load_class_error'); } } $classes[$classToken] =& new $class(); //实例化 return $classes[$classToken]; }