function.php
来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 159 行
PHP
159 行
<?php// +----------------------------------------------------------------------+// | PEAR :: Cache |// +----------------------------------------------------------------------+// | Copyright (c) 1997-2003 The PHP Group |// +----------------------------------------------------------------------+// | This source file is subject to version 2.0 of the PHP license, |// | that is bundled with this package in the file LICENSE, and is |// | available at through the world-wide-web at |// | http://www.php.net/license/2_02.txt. |// | If you did not receive a copy of the PHP license and are unable to |// | obtain it through the world-wide-web, please send a note to |// | license@php.net so we can mail you a copy immediately. |// +----------------------------------------------------------------------+// | Authors: Sebastian Bergmann <sb@sebastian-bergmann.de> |// +----------------------------------------------------------------------+//// $Id: Function.php,v 1.6 2003/01/04 11:54:45 mj Exp $require_once 'Cache.php';/*** Function_Cache** Purpose:** Caching the result and output of functions.** Example:** require_once 'Cache/Function.php';** class foo {* function bar($test) {* echo "foo::bar($test)<br>";* }* }** class bar {* function foobar($object) {* echo '$'.$object.'->foobar('.$object.')<br>';* }* }** $bar = new bar;** function foobar() {* echo 'foobar()';* }** $cache = new Cache_Function();** $cache->call('foo::bar', 'test');* $cache->call('bar->foobar', 'bar');* $cache->call('foobar');** Note:* * You cannot cache every function. You should only cache * functions that only depend on their arguments and don't use* global or static variables, don't rely on database queries or * files, and so on.* * @author Sebastian Bergmann <sb@sebastian-bergmann.de>* @module Function_Cache* @modulegroup Function_Cache* @package Cache* @version $Revision: 1.6 $* @access public*/class Cache_Function extends Cache { var $expires; /** * Constructor * * @param string Name of container class * @param array Array with container class options * @param integer Number of seconds for which to cache */ function Cache_Function($container = 'file', $container_options = array('cache_dir' => '.', 'filename_prefix' => 'cache_' ), $expires = 3600 ) { $this->Cache($container, $container_options); $this->expires = $expires; } /** * PEAR-Deconstructor * Call deconstructor of parent */ function _Cache_Function() { $this->_Cache(); } /** * Calls a cacheable function or method. * * @return mixed $result * @access public */ function call() { // get arguments $arguments = func_get_args(); // generate cache id $id = md5(serialize($arguments)); // query cache $cached_object = $this->get($id, 'function_cache'); if ($cached_object != NULL) { // cache hit: return cached output and result $output = $cached_object[0]; $result = $cached_object[1]; } else { // cache miss: call function, store output and result in cache ob_start(); $target = array_shift($arguments); // classname::staticMethod if (strstr($target, '::')) { list($class, $method) = explode('::', $target); $result = call_user_func_array(array($class, $method), $arguments); } // object->method elseif (strstr($target, '->')) { list($object, $method) = explode('->', $target); global $$object; $result = call_user_func_array(array($$object, $method), $arguments); } // function else { $result = call_user_func_array($target, $arguments); } $output = ob_get_contents(); ob_end_clean(); $this->save($id, array($output, $result), $this->expires, 'function_cache'); } echo $output; return $result; }}?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?