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

📄 callback.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
字号:
<?php/*** @version		$Id: callback.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();/** * Joomla! Cache callback type object * * @package		Joomla.Framework * @subpackage	Cache * @since		1.5 */class JCacheCallback extends JCache{	/**	 * Executes a cacheable callback if not found in cache else returns cached output and result	 *	 * Since arguments to this function are read with func_get_args you can pass any number of arguments to this method	 * as long as the first argument passed is the callback definition.	 *	 * The callback definition can be in several forms:	 * 	- Standard PHP Callback array <http://php.net/callback> [recommended]	 * 	- Function name as a string eg. 'foo' for function foo()	 * 	- Static method name as a string eg. 'MyClass::myMethod' for method myMethod() of class MyClass	 *	 * @access	public	 * @return	mixed	Result of the callback	 * @since	1.5	 */	function call()	{		// Get callback and arguments		$args		= func_get_args();		$callback	= array_shift($args);		return $this->get( $callback, $args );	}	/**	 * Executes a cacheable callback if not found in cache else returns cached output and result	 *	 * @access	public	 * @param	mixed	Callback or string shorthand for a callback	 * @param	array	Callback arguments	 * @return	mixed	Result of the callback	 * @since	1.5	 */	function get( $callback, $args, $id=false )	{		// Normalize callback		if (is_array( $callback )) {			// We have a standard php callback array -- do nothing		} elseif (strstr( $callback, '::' )) {			// This is shorthand for a static method callback classname::methodname			list( $class, $method ) = explode( '::', $callback );			$callback = array( trim($class), trim($method) );		} elseif (strstr( $callback, '->' )) {			/*			 * This is a really not so smart way of doing this... we provide this for backward compatability but this			 * WILL!!! disappear in a future version.  If you are using this syntax change your code to use the standard			 * PHP callback array syntax: <http://php.net/callback>			 *			 * We have to use some silly global notation to pull it off and this is very unreliable			 */			list( $object_123456789, $method ) = explode('->', $callback);			global $$object_123456789;			$callback = array( $$object_123456789, $method );		} else {			// We have just a standard function -- do nothing		}		if (!$id) {			// Generate an ID			$id = $this->_makeId($callback, $args);		}		// Get the storage handler and get callback cache data by id and group		$data = parent::get($id);		if ($data !== false) {			$cached = unserialize( $data );			$output = $cached['output'];			$result = $cached['result'];		} else {			ob_start();			ob_implicit_flush( false );			$result = call_user_func_array($callback, $args);			$output = ob_get_contents();			ob_end_clean();			$cached = array();			$cached['output'] = $output;			$cached['result'] = $result;			// Store the cache data			$this->store(serialize($cached), $id);		}		echo $output;		return $result;	}	/**	 * Generate a callback cache id	 *	 * @access	private	 * @param	callback	$callback	Callback to cache	 * @param	array		$args	Arguments to the callback method to cache	 * @return	string	MD5 Hash : function cache id	 * @since	1.5	 */	function _makeId($callback, $args)	{		if(is_array($callback) && is_object($callback[0])) {			$vars = get_object_vars($callback[0]);			$vars[] = strtolower(get_class($callback[0]));			$callback[0] = $vars;		}		return md5(serialize(array($callback, $args)));	}}

⌨️ 快捷键说明

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