Dieser Artikel stellt hauptsächlich die Verwendung anonymer Funktionen und Schließungen in PHP vor. Ich hoffe, dass er für alle hilfreich ist.
1: Anonyme Funktionen (kann nur in PHP5.3.0 oder höher verwendet werden)
Anonyme Funktionen (Anonyme Funktionen) auch in PHP Mit sogenannten Abschlussfunktionen (closes) können Sie eine Funktion ohne Namen angeben. Am häufigsten wird der Parameterwert der Rückruffunktion verwendet. (http://php.net/manual/zh/functions.anonymous.php)
Definition der anonymen Funktion:
$closureFunc = function(){ .... };
z.B : Weisen Sie die anonyme Funktion einer Variablen zu und rufen Sie sie über die Variable auf
$closureFunc = function($str){ echo $str; }; $closureFunc("hello world!");
Ausgabe: Hallo Welt!
2: Schließung
2.1 Fügen Sie anonyme Funktionen in gewöhnliche Funktionen ein, oder Sie können anonyme Funktionen einfügen Zurück, dies stellt einen einfachen Abschluss dar
function closureFunc1(){ $func = function(){ echo "hello"; }; $func(); } closureFunc1();//输出: hello
2.2 Referenz lokal Variablen in anonymen Funktionen
function closureFunc2(){ $num = 1; $func = function(){ echo $num; }; $func(); } closureFunc2();//Notice: Undefined variable: num
Nachdem die obige Funktion ausgeführt wurde, wird ein Hinweisfehler angezeigt wird gemeldet, was darauf hinweist, dass wir auf diese Weise keine lokalen Variablen in anonymen Funktionen verwenden können. Zu diesem Zeitpunkt müssen wir ein PHP-Schlüsselwort verwenden. Der Code lautet wie folgt:
function closureFunc2(){ $num = 1; $func = function() use($num){ echo $num; }; $func(); } closureFunc2();//输出: 1
2.3 返回匿名函数
function closureFunc3(){ $num = 1; $func = function() use($num){ echo $num; }; return $func; }$func = closureFunc3(); //函数返回匿名函数$func(); //然后我们在用$func() 调用//输出: 1
2.4 当我们在返回匿名函数时候怎么给匿名函数传参呢? 其实跟普通函数传参数一样
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 怎么用闭包来改变上下文引用的变量值?
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
看上面的输入结果,显然没有达到目的, 其实只要加一个 & 引用符号就可以了
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 把匿名函数当作参数传递
function callFunc($func){ $func("argv"); } callFunc(function($str){ echo $str; })//输出: // argv
Das obige ist der detaillierte Inhalt vonAnonyme Funktionen und Schließungsverwendung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!