Cache_Lite_Function::call() -- キャッシュ可能な関数あるいはメソッドをコールする
(あるいはすでにキャッシュされている場合はコールしない)
説明
もしキャッシュがなければ、引数と共に与えられた関数をコールします ;
もしくは、関数の出力がキャッシュから読み込まれた場合はブラウザに送信し、
また、値がキャッシュから読み込まれ返された場合、その値を返します。
注意
この関数は、スタティックにコールする
ことはできません。
例
例 36-1典型的な関数の使用法 <?php
require_once('Cache/Lite/Function.php');
$options = array(
'cacheDir' => '/tmp/',
'lifeTime' => 3600
);
$cache = new Cache_Lite_Function($options);
$cache->call('function_to_bench', 12, 45);
function function_to_bench($arg1, $arg2)
{
echo "This is the output of the function function_to_bench($arg1, $arg2) !<br>";
return "This is the result of the function function_to_bench($arg1, $arg2) !<br>";
}
?> |
|
例
例 36-2典型的なメソッドの使用法 <?php
require_once('Cache/Lite/Function.php');
$options = array(
'cacheDir' => '/tmp/',
'lifeTime' => 3600
);
$cache = new Cache_Lite_Function($options);
$obj = new bench();
$obj->test = 666;
$cache->call('obj->method_to_bench', 12, 45);
class bench
{
var $test;
function method_to_bench($arg1, $arg2)
{
echo "\$obj->test = $this->test and this is the output of the method \$obj->method_to_bench($arg1, $arg2) !<br>";
return "\$obj->test = $this->test and this is the result of the method \$obj->method_to_bench($arg1, $arg2) !<br>";
}
}
?> |
|
もし、Cache_Lite_Function で $this オブジェクト
(例えば $cache->call('this->method',...)
を使用したい場合、
まずこのページの最後の例を参照ください。
例
例 36-3典型的な静的メソッドの使用法 <?php
require_once('Cache/Lite/Function.php');
$options = array(
'cacheDir' => '/tmp/',
'lifeTime' => 3600
);
$cache = new Cache_Lite_Function($options);
$cache->call('bench::static_method_to_bench', 12, 45);
class bench
{
var $test;
function static_method_to_bench($arg1, $arg2) {
echo "This is the output of the function static_method_to_bench($arg1, $arg2) !<br>";
return "This is the result of the function static_method_to_bench($arg1, $arg2) !<br>";
}
}
?> |
|
例
例 36-4このメソッドの別の使用法 (キャッシュの $this->method() コールを使用する方法) <?php
// Cache_Lite-1.7.0beta2 以降で使用可能です
require_once('Cache/Lite/Function.php');
$options = array(
'cacheDir' => '/tmp/',
'lifeTime' => 3600
);
$obj = new foo($options);
class foo
{
var $test;
function foo($options)
{
$cache = new Cache_Lite_Function($options);
$this->test = 'foobar';
$cache->call(array(&$this, 'method_bar'), 12, 45);
}
function method_bar($arg1, $arg2)
{
echo "\$this->test = $this->test and this is the output of the method \$this->method_bar($arg1, $arg2) !<br>";
return "\$this->test = $this->test and this is the result of the method \$this->method_bar($arg1, $arg2) !<br>";
}
}
?> |
|
つまり、メソッドのコールについてのいちばんよい方法は、最初の引数として
array(&$object, 'nameOfTheMethod') を使用することです。
'$object->nameOfTheMethod' を使用すると、例えば "$this" ではうまく動作しません。