⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cache.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
字号:
<?php/** * @version		$Id: cache.php 10707 2008-08-21 09:52:47Z eddieajau $ * @package		Joomla.Framework * @subpackage	Cache * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved. * @license		GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant to the * GNU General Public License, and as distributed it includes or is derivative * of works licensed under the GNU General Public License or other free or open * source software licenses. See COPYRIGHT.php for copyright notices and * details. */// Check to ensure this file is within the rest of the frameworkdefined('JPATH_BASE') or die();//Register the session storage class with the loaderJLoader::register('JCacheStorage', dirname(__FILE__).DS.'storage.php');/** * Joomla! Cache base object * * @abstract * @package		Joomla.Framework * @subpackage	Cache * @since		1.5 */class JCache extends JObject{	/**	 * Storage Handler	 * @access	private	 * @var		object	 */	var $_handler;	/**	 * Cache Options	 * @access	private	 * @var		array	 */	var $_options;	/**	 * Constructor	 *	 * @access	protected	 * @param	array	$options	options	 */	function __construct($options)	{		$this->_options =& $options;		// Get the default group and caching		if(isset($options['language'])) {			$this->_options['language'] = $options['language'];		} else {			$options['language'] = 'en-GB';		}		if(isset($options['cachebase'])) {			$this->_options['cachebase'] = $options['cachebase'];		} else {			$this->_options['cachebase'] = JPATH_ROOT.DS.'cache';		}		if(isset($options['defaultgroup'])) {			$this->_options['defaultgroup'] = $options['defaultgroup'];		} else {			$this->_options['defaultgroup'] = 'default';		}		if(isset($options['caching'])) {			$this->_options['caching'] =  $options['caching'];		} else {			$this->_options['caching'] = true;		}		if( isset($options['storage'])) {			$this->_options['storage'] = $options['storage'];		} else {			$this->_options['storage'] = 'file';		}		//Fix to detect if template positions are enabled...		if(JRequest::getCMD('tpl',0)) {			$this->_options['caching'] = false;		}	}	/**	 * Returns a reference to a cache adapter object, always creating it	 *	 * @static	 * @param	string	$type	The cache object type to instantiate	 * @return	object	A JCache object	 * @since	1.5	 */	function &getInstance($type = 'output', $options = array())	{		$type = strtolower(preg_replace('/[^A-Z0-9_\.-]/i', '', $type));		$class = 'JCache'.ucfirst($type);		if(!class_exists($class))		{			$path = dirname(__FILE__).DS.'handler'.DS.$type.'.php';			if (file_exists($path)) {				require_once($path);			} else {				JError::raiseError(500, 'Unable to load Cache Handler: '.$type);			}		}		$instance = new $class($options);		return $instance;	}	/**	 * Get the storage handlers	 *	 * @access public	 * @return array An array of available storage handlers	 */	function getStores()	{		jimport('joomla.filesystem.folder');		$handlers = JFolder::files(dirname(__FILE__).DS.'storage', '.php$');		$names = array();		foreach($handlers as $handler)		{			$name = substr($handler, 0, strrpos($handler, '.'));			$class = 'JCacheStorage'.$name;			if(!class_exists($class)) {				require_once(dirname(__FILE__).DS.'storage'.DS.$name.'.php');			}			if(call_user_func_array( array( trim($class), 'test' ), null)) {				$names[] = $name;			}		}		return $names;	}	/**	 * Set caching enabled state	 *	 * @access	public	 * @param	boolean	$enabled	True to enable caching	 * @return	void	 * @since	1.5	 */	function setCaching($enabled)	{		$this->_options['caching'] = $enabled;	}	/**	 * Set cache lifetime	 *	 * @access	public	 * @param	int	$lt	Cache lifetime	 * @return	void	 * @since	1.5	 */	function setLifeTime($lt)	{		$this->_options['lifetime'] = $lt;	}	/**	 * Set cache validation	 *	 * @access	public	 * @return	void	 * @since	1.5	 */	function setCacheValidation()	{		// Deprecated	}	/**	 * Get cached data by id and group	 *	 * @abstract	 * @access	public	 * @param	string	$id		The cache data id	 * @param	string	$group	The cache data group	 * @return	mixed	Boolean false on failure or a cached data string	 * @since	1.5	 */	function get($id, $group=null)	{		// Get the default group		$group = ($group) ? $group : $this->_options['defaultgroup'];		// Get the storage handler		$handler =& $this->_getStorage();		if (!JError::isError($handler) && $this->_options['caching']) {			return $handler->get($id, $group, (isset($this->_options['checkTime']))? $this->_options['checkTime'] : true);		}		return false;	}	/**	 * Store the cached data by id and group	 *	 * @access	public	 * @param	string	$id		The cache data id	 * @param	string	$group	The cache data group	 * @param	mixed	$data	The data to store	 * @return	boolean	True if cache stored	 * @since	1.5	 */	function store($data, $id, $group=null)	{		// Get the default group		$group = ($group) ? $group : $this->_options['defaultgroup'];		// Get the storage handler and store the cached data		$handler =& $this->_getStorage();		if (!JError::isError($handler) && $this->_options['caching']) {			return $handler->store($id, $group, $data);		}		return false;	}	/**	 * Remove a cached data entry by id and group	 *	 * @abstract	 * @access	public	 * @param	string	$id		The cache data id	 * @param	string	$group	The cache data group	 * @return	boolean	True on success, false otherwise	 * @since	1.5	 */	function remove($id, $group=null)	{		// Get the default group		$group = ($group) ? $group : $this->_options['defaultgroup'];		// Get the storage handler		$handler =& $this->_getStorage();		if (!JError::isError($handler)) {			return $handler->remove($id, $group);		}		return false;	}	/**	 * Clean cache for a group given a mode.	 *	 * group mode		: cleans all cache in the group	 * notgroup mode	: cleans all cache not in the group	 *	 * @access	public	 * @param	string	$group	The cache data group	 * @param	string	$mode	The mode for cleaning cache [group|notgroup]	 * @return	boolean	True on success, false otherwise	 * @since	1.5	 */	function clean($group=null, $mode='group')	{		// Get the default group		$group = ($group) ? $group : $this->_options['defaultgroup'];		// Get the storage handler		$handler =& $this->_getStorage();		if (!JError::isError($handler)) {			return $handler->clean($group, $mode);		}		return false;	}	/**	 * Garbage collect expired cache data	 *	 * @access public	 * @return boolean  True on success, false otherwise.	 * @since	1.5	 */	function gc()	{		// Get the storage handler		$handler =& $this->_getStorage();		if (!JError::isError($handler)) {			return $handler->gc();		}		return false;	}	/**	 * Get the cache storage handler	 *	 * @access protected	 * @return object A JCacheStorage object	 * @since	1.5	 */	function &_getStorage()	{		if (is_a($this->_handler, 'JCacheStorage')) {			return $this->_handler;		}		$this->_handler =& JCacheStorage::getInstance($this->_options['storage'], $this->_options);		return $this->_handler;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -