Bonjour,

J'ai essayé de mettre en cache l'appel d'une méthode d'un objet à l'aide de la méthode Call.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$cache = Zend_Registry::get('cache');
$cache->call(array($this, '_maMethod'));
Cette instruction soulève une exception. Effectivement, lorsque l'on regarde le code du Zend Framework, on peut voir que l'identifiant pour la mise en cache n'accepte pas d'objet et ne prends en compte que les String.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
    private function _makeId($name, $parameters)
    {
        if (!is_string($name)) {
            Zend_Cache::throwException('Incorrect function name');
        }
        if (!is_array($parameters)) {
            Zend_Cache::throwException('parameters argument must be an array');
        }
        return md5($name . serialize($parameters));
    }
Cette limitation est étrange. Cela voudrait dire que l'on peut mettre en cache l'appel d'une fonction mais pas l'appel d'une méthode.
Ce qui est encore plus étrange c'est que le Zend Framework ce base sur call_user_func_array qui est capable de gérer des méhodes.

Avez-vous déjà utilisé cette méthode et avez vous déjà vu cette limitation ?

Merci