Maison  >  Article  >  développement back-end  >  Fonctions anonymes et fermetures en php

Fonctions anonymes et fermetures en php

陈政宽~
陈政宽~original
2017-06-28 11:32:12973parcourir

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 la valeur du paramètre de la fonction de rappel .

Définition de la fonction anonyme :

$closureFunc = function(){

    ....

 };

ex : Attribuez la fonction anonyme à la variable et appelez-la via la variable

 $closureFunc = function($str){

   echo $str;

  };  $closureFunc("hello world!");

Sortie : bonjour tout le monde !

2 : Fermeture

2.1 Mettez la fonction anonyme dans une fonction normale, ou vous pouvez renvoyer la fonction anonyme, ceci constitue une simple fermeture

function closureFunc1(){    $func = function(){        echo "hello";
    };    $func();
}
closureFunc1();//输出: hello

2.2 Dans la fonction anonyme fait référence à la variable locale

function closureFunc2(){    $num = 1;    $func = function(){        echo $num;
    };    $func();
}
closureFunc2();//Notice: Undefined variable: num

après que la fonction ci-dessus est run , une erreur Notice sera signalée, indiquant que nous ne pouvons pas utiliser de variables locales dans des fonctions anonymes. Pour le moment, 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.3Retour à la fonction anonyme

function closureFunc3(){    $num = 1;    $func = function() use($num){        echo $num;
    };    return $func;
}$func = closureFunc3(); //函数返回匿名函数$func(); //然后我们在用$func() 调用//输出: 1

2.4Comment passer des paramètres à la fonction anonyme lorsque nous la renvoyons ? 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn