In JavaScript ist es einfach, eine Funktion, die von einer anderen Funktion zurückgegeben wird, in einer einzigen Anweisung aufzurufen. Betrachten Sie zum Beispiel:
function createOperation(operator)
{
return Function("a", "b", "return a " + operator + "b;")
}
var result = createOperation("*")(2, 3);
Hier rufen wir eine Funktion auf, um eine andere Funktion zu erstellen, die zwei Werte multipliziert, und rufen dann diese neue Funktion mit zwei Argumenten auf.
Wenn ich versuche, einen ähnlichen Codeausschnitt in PHP zu replizieren, endet es mit zwei Anweisungen und einer zusätzlichen Variablen:
function createOperation(operator)
{
return create_function('$a,$b', 'return $a '.$operator.' $b;');
}
$temp_var = createOperation("+");
$result = $temp_var(2, 3);
Die kurze, Javascript-ähnliche Form funktioniert nicht:
$result = createOperation("+")(2, 3);
Dies ist besonders mühsam beim Schreiben einer Aufrufkette (Pseudocode):
foo(arg1)(arg2, arg3)()(...)
Was würde werden zu:
$temp1 = foo($arg1);
$temp2 = $temp1($arg2, $arg3);
$temp3 = $temp2();
...
Also meine Frage ist: Gibt es eine Möglichkeit in PHP, eine Funktion, die von einer anderen Funktion zurückgegeben wird, aufzurufen, ohne temporäre Variablen zu verwenden, oder zumindest in einer einzigen Anweisung?