Existe-t-il un truc en PHP 4 pour implémenter des fonctions qui renvoient des fonctions? Je pensais que le code suivant fonctionnerait:Fonctions anonymes (lambdas, fermetures) en PHP 4
function xxx($a) {
return function($b) {
print "a=$a, b=$b \n";
}
}
$f1 = xxx(1);
$f1(2);
Malheureusement, pas de chance en PHP 4. Probablement cela fonctionne en PHP 5, mais je me suis limité à PHP 4.
J'ai essayé de contourner avec OO, mais à nouveau échoué (déclarations de classe ne peuvent pas être imbriquées):
class Closure {
function run($a) {
print "raise: NotImplementedException, instead: $a\n";
}
}
class WantCheckNesting extends Closure {
function run($a, $b) {
class Nested extends Closure {
function run($c) {
print "a=$a, b=$b, c=$c\n";
}
}
$o = new Nested();
return $o;
}
}
$d = new WantCheckNesting();
$e = $d->run(2, 3);
$e->run(4);
il y a une fonction « create_function », mais il est très limité: le corps doit être une chaîne.
D'autres idées?