| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | <?php/** *  cache_factory.class.php 缓存工厂类 * * @copyright			(C) 2005-2010 PHPCMS * @license				http://www.phpcms.cn/license/ * @lastmodify			2010-6-1 */final class cache_factory {		/**	 * 当前缓存工厂类静态实例	 */	private static $cache_factory;		/**	 * 缓存配置列表	 */	protected $cache_config = array();		/**	 * 缓存操作实例化列表	 */	protected $cache_list = array();		/**	 * 构造函数	 */	public function __construct() {	}		/**	 * 返回当前终级类对象的实例	 * @param $cache_config 缓存配置	 * @return object	 */	public static function get_instance($cache_config = '') {		if(cache_factory::$cache_factory == '' || $cache_config !='') {			cache_factory::$cache_factory = new cache_factory();			if(!empty($cache_config)) {				cache_factory::$cache_factory->cache_config = $cache_config;			}		}		return cache_factory::$cache_factory;	}		/**	 * 获取缓存操作实例	 * @param $cache_name 缓存配置名称	 */	public function get_cache($cache_name) {		if(!isset($this->cache_list[$cache_name]) || !is_object($this->cache_list[$cache_name])) {			$this->cache_list[$cache_name] = $this->load($cache_name);		}		return $this->cache_list[$cache_name];	}		/**	 *  加载缓存驱动	 * @param $cache_name 	缓存配置名称	 * @return object	 */	public function load($cache_name) {		$object = null;		if(isset($this->cache_config[$cache_name]['type'])) {			switch($this->cache_config[$cache_name]['type']) {				case 'file' :					$object = pc_base::load_sys_class('cache_file');					break;				case 'memcache' :					define('MEMCACHE_HOST', $this->cache_config[$cache_name]['hostname']);					define('MEMCACHE_PORT', $this->cache_config[$cache_name]['port']);					define('MEMCACHE_TIMEOUT', $this->cache_config[$cache_name]['timeout']);					define('MEMCACHE_DEBUG', $this->cache_config[$cache_name]['debug']);										$object = pc_base::load_sys_class('cache_memcache');					break;				case 'apc' :					$object = pc_base::load_sys_class('cache_apc');					break;				default :					$object = pc_base::load_sys_class('cache_file');			}		} else {			$object = pc_base::load_sys_class('cache_file');		}		return $object;	}}?>
 |