mixed Cache_Lite_Function::call (
string$functionName
, mixed$arg1
, mixed$arg2
, mixed$arg3
, mixed...
)
Appel la fonction fournie avec les arguments fournis uniquement s'il n'y a pas de cache concernant celà ; sinon, l'affichage de la fonction est lu depuis le cache et est envoyé au navigateur et la valeur retournée est également lu depuis le cache et retournée.
Retourne le résultat de la fonction/méthode.
This function can not be called statically.
Utilisation classique avec une fonction
<?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 'ceci est l\'affichage de la fonction function_to_bench($arg1, $arg2) !<br />';
return 'ceci est l\'affichage de la fonction function_to_bench($arg1, $arg2) !<br />';
}
?>
Utilisation classique avec une méthode
<?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 et ceci est l'affichage de la méthode \$obj->method_to_bench($arg1, $arg2) !<br />";
return "\$obj->test = $this->test et ceci est l'affichage de la méthode \$obj->method_to_bench($arg1, $arg2) !<br />";
}
}
?>
Si vous essayez d'utiliser Cache_Lite_Function avec l'objet $this ($cache->call('this->method',...) par exemple), regardez le dernier exemple de cette page.
Utilisation classique avec une méthode statique
<?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 "Ceci est l'affichage de la fonction static_method_to_bench($arg1, $arg2) !<br />";
return "Ceci est l'affichage de la fonction static_method_to_bench($arg1, $arg2) !<br />";
}
}
?>
Un autre exemple utilisant une méthode (comment utiliser le cache avec des appels $this->method())
<?php
// Depuis 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 et c'est la sortie de la méthode \$this->method_bar($arg1, $arg2) !<br>";
return "\$this->test = $this->test et c'est le résultat de la méthode \$this->method_bar($arg1, $arg2) !<br>";
}
}
?>
Donc, pour les appels à la méthode, la meilleure solution est d'utiliser un tableau (&$object, 'nameOfTheMethod') en tant que premier argument au lieu d'utiliser '$object->nameOfTheMethod' qui ne fonctionne pas avec "$this" par exemple.