Cet article présente principalement l'utilisation des fonctions anonymes et des fermetures en php. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
1 : Fonctions anonymes (ne peut être utilisé qu'en php5.3.0 ou supérieur)
Fonctions anonymes (Fonctions anonymes) en php, également appelées fonctions de fermeture (closes) vous permettent de spécifier une fonction sans nom. La valeur la plus couramment utilisée est la valeur du paramètre de la fonction de rappel. (http://php.net/manual/zh/functions.anonymous.php)
Définition de la fonction anonyme :
$closureFunc = function(){ .... };
ex : Attribuez la fonction anonyme à une variable et appelez-la via la variable
$closureFunc = function($str){ echo $str; }; $closureFunc("hello world!");
Sortie : bonjour tout le monde !
2 : Fermeture
2.1 Mettre les fonctions anonymes dans les fonctions ordinaires, également Anonymes les fonctions peuvent être renvoyées, ce qui forme une simple fermeture
function closureFunc1(){ $func = function(){ echo "hello"; }; $func(); } closureFunc1();//输出: hello
2.2 Référencer des variables locales dans des fonctions anonymes
function closureFunc2(){ $num = 1; $func = function(){ echo $num; }; $func(); } closureFunc2();//Notice: Undefined variable: num
Après que la fonction ci-dessus soit exécuté, une erreur d'avis sera signalée, indiquant que nous ne pouvons pas utiliser de variables locales dans des fonctions anonymes de cette manière. À ce stade, nous devons citer une utilisation de mot-clé PHP, le code est le suivant
.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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!