Bonjour,
Je m'arrache les cheveux depuis hier soir sur un problème pas évident à trouver sur Google...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function un($val){ echo $val; return new stdClass(); } function deux($fn){ echo "test" print_r($fn); } deux(un("a"));
Ce qu'il se passe :
La fonction un('a') est executé, puis le résultat est passé à la fonction deux()
Ce que j'aimerais :
La fonction un('a') soit passée (sans être exécuté) à la fonction deux(), un('a') sera executé lors de l'appel du print_r par exemple
Pouquoi faire ça ????
Pour implémenter un système de cache. Concrètement, la fonction deux() va vérifier si le résultat de un('a') est en cache. Si c'est en cache, elle n’exécutera pas un('a')
Pourtant je sais que c'est possible, par exemple c'est le fonctionnement de la fonction remember() du cache apc du framework laravel
Ici ils demandent une fonction anonyme (Closure) ... C'est peut être une piste mais j'aimerais éviter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public function remember($key, $minutes, Closure $callback){ ... }
Merci
Partager