Heim > Artikel > Backend-Entwicklung > Detaillierte Erklärung anonymer Funktionen und Schließungen in PHP
1: Anonyme Funktionen (Nur in PHP 5.3.0 oder höher verfügbar)
Anonyme Funktionen in PHP, auch Abschlussfunktion genannt (schließt), ermöglicht die Angabe einer Funktion ohne Namen. Am häufigsten wird der Parameterwert der Callback-Funktion
verwendet. Definition der anonymen Funktion:
$closureFunc = function(){ .... };
z. B.: Weisen Sie die anonyme Funktion der Funktion zu Variable , Aufruf
$closureFunc = function($str){ echo $str; }; $closureFunc("hello world!");
über Variablen Ausgabe: Hallo Welt!
2: Schließung
2.1 Konvertieren Sie die anonyme Funktion. Wenn Sie sie in eine gewöhnliche Funktion einfügen, kann die anonyme Funktion auch zurückgegeben werden, was einen einfachen Abschluss darstellt.
function closureFunc1(){ $func = function(){ echo "hello"; }; $func(); } closureFunc1(); //输出: hello
2.2 In der anonymen Funktion bezieht sich auf die lokalen Variablen
function closureFunc2(){ $num = 1; $func = function(){ echo $num; }; $func(); } closureFunc2(); //Notice: Undefined variable: num
Nachdem die obige Funktion ausgeführt wurde, wird ein Hinweisfehler gemeldet, der darauf hinweist, dass wir keine lokalen Variablen in anonymen Funktionen verwenden können. Zu diesem Zeitpunkt müssen wir ein PHP zitieren Schlüsselwortverwendung, der Code lautet wie folgt
function closureFunc2(){ $num = 1; $func = function() use($num){ echo $num; }; $func(); } closureFunc2(); //输出: 1
2.3 Anonyme Funktion zurückgeben
function closureFunc3(){ $num = 1; $func = function() use($num){ echo $num; }; return $func; } $func = closureFunc3(); //函数返回匿名函数 $func(); //然后我们在用$func() 调用 //输出: 1
2.4 Wie übergeben wir Parameter an die anonyme Funktion, wenn wir sie zurückgeben? Tatsächlich ist es dasselbe wie die Übergabe von Parametern an eine normale Funktion
function closureFunc4(){ $num = 1; $func = function($str) use($num){ echo $num; echo "\n"; echo $str; }; return $func; } $func = closureFunc4(); $func("hello, closure4"); //输出: //1 //hello, closure4
2.5 Wie kann ich den Abschluss verwenden, um den Variablenwert zu ändern, auf den der Kontext verweist?
function closureFunc5(){ $num = 1; $func = function() use($num) { echo "\n"; $num++; echo $num; }; echo "\n"; echo $num; return $func; } $func = closureFunc5(); $func(); $func(); $func(); //输出: // 1 // 2 // 2 // 2
Wenn man sich die obigen Eingabeergebnisse ansieht, ist es offensichtlich, dass der Zweck nicht erreicht wurde. Fügen Sie einfach ein &-Referenzsymbol hinzu
function closureFunc5(){ $num = 2; $func = function() use(&$num) { echo "\n"; $num++; echo $num; }; echo "\n"; echo $num; return $func; } $func = closureFunc5(); $func(); $func(); $func(); //输出: // 2 // 3 // 4 // 5
2.6 Anonyme Funktionen als Übergabeparameter behandeln
function callFunc($func){ $func("argv"); } callFunc(function($str){ echo $str; }) //输出: // argv
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung anonymer Funktionen und Schließungen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!