Cache_Lite_Function::call() -- Appel une fonction ou une méthode de cache (ou pas si il y a déjà un cache pour cela)
Description
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.
Valeur retournée
Retourne le résultat de la fonction/méthode.
Note
Cette fonction ne peut pas être appelée de façon statique.
Exemple
Exemple 31-1. 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 />';
}
?> |
|
Exemple
Exemple 31-2. 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.
Exemple
Exemple 31-3. 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 />";
}
}
?> |
|
Exemple
Exemple 31-4. 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.