2015-09-04 18 views
7

Ich experimentiere eigentlich die funktionale Programmierung in PHP. Ich hätte gerne einige Präzisionen über einige Funktionsaufrufe.Funktionale Programmierung - Aufruf Funktion mit allen Parametern

als Beispiel:

function addition($num1){ 
    return function ($num2) use ($num1){ 
     return $num1+$num2; 
    } 
} 
$add_2_to = addition(2); 
echo $add_2_to(3); 
echo $add_2_to(4); 

Gibt es eine Möglichkeit, die Additionsfunktion mit allen Parametern zu nennen? Ich habe versucht, auf diese Weise ohne Chancen:

echo addition(2)(3); 
+0

PS ist die Multiplikation (mit '*'), keine Addition. – naomik

Antwort

7

Sie ziemlich nah dran sind. PHP hat keine lexikalischen Gültigkeitsbereich, so dass die Variable $ num1 innerhalb der zurück Funktion nicht verfügbar ist ... für die Sie müssen explizit importieren mit use

function addition($num1){ 
    return function ($num2) use ($num1){ 
     return $num1*$num2; 
    }; 
} 
$add_2_to = addition(2); 
echo $add_2_to(3); 
echo $add_2_to(4); 

Die Syntax Sie echo addition(2)(3); derzeit vorgeschlagen wird nicht funktionieren, aber wenn PHP 7 kommt an. Für aktuelle Versionen von PHP können Sie call_user_func verwenden, um zu tun, was Sie wollen.

echo call_user_func(addition(2), 3); 
+0

funktionieren perfekt @Orangepill! Vielen Dank –

Verwandte Themen