Maison >développement back-end >tutoriel php >Explication détaillée des fonctions anonymes et des fermetures en php
1 : Fonctions anonymes (Uniquement disponible en php5.3.0 ou supérieur)
Fonctions anonymes en php, également appelées fonction de fermeture (ferme), permet de spécifier une fonction sans nom. Le plus couramment utilisé est le paramètre valeur de la fonction de rappel
Définition de la fonction anonyme :
$closureFunc = function(){ .... };
ex : Attribuer la fonction anonyme au variable , Appel
$closureFunc = function($str){ echo $str; }; $closureFunc("hello world!");
via des variables Sortie : bonjour tout le monde !
2 : Fermeture
2.1 Convertir la fonction anonyme Lorsqu'elle est placée dans une fonction ordinaire, la fonction anonyme peut également être renvoyée, ce qui constitue une simple fermeture
function closureFunc1(){ $func = function(){ echo "hello"; }; $func(); } closureFunc1(); //输出: hello
2.2 Dans la fonction anonyme, fait référence à les Variables locales
function closureFunc2(){ $num = 1; $func = function(){ echo $num; }; $func(); } closureFunc2(); //Notice: Undefined variable: num
Après l'exécution de la fonction ci-dessus, une erreur d'avis sera signalée, indiquant que nous ne pouvons pas utiliser de variables locales dans les fonctions anonymes. À ce stade, nous devons citer un PHP. utilisation du mot-clé, le code est le suivant
function closureFunc2(){ $num = 1; $func = function() use($num){ echo $num; }; $func(); } closureFunc2(); //输出: 1
2.3 Renvoyer la fonction anonyme
function closureFunc3(){ $num = 1; $func = function() use($num){ echo $num; }; return $func; } $func = closureFunc3(); //函数返回匿名函数 $func(); //然后我们在用$func() 调用 //输出: 1
2.4 Comment passer les paramètres au fonction anonyme quand on la renvoie ? En fait, cela revient à passer des paramètres à une fonction normale
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 Comment utiliser les fermetures pour modifier les valeurs des variables référencées par le contexte ?
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
En regardant les résultats d'entrée ci-dessus, il est évident que l'objectif n'a pas été atteint. En fait, ajoutez simplement un symbole de référence &
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. Traitez les fonctions anonymes comme des paramètres de passage
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!