Maison > développement back-end > tutoriel php > Explication détaillée des fonctions anonymes et exemples de fermeture en php

Explication détaillée des fonctions anonymes et exemples de fermeture en php

陈政宽~
Libérer: 2023-03-11 17:36:01
original
1017 Les gens l'ont consulté

1 : Fonction anonyme

La fonction anonyme en php, aussi appelée fonction de fermeture, permet 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.

Définition de la fonction anonyme :

$closureFunc = function(){    .... };
   eg: 把匿名函数赋值给变量,通过变量来调用
$closureFunc = function($str){   echo $str;  };  $closureFunc("hello world!");
  输出: hello world!
Copier après la connexion

2 : Clôture

2.1 Mettez la fonction anonyme dans une fonction normale, ou vous pouvez retourner la fonction anonyme, qui constitue Créé une simple fermeture

function closureFunc1(){    $func = function(){        echo "hello";
    };    $func();
}
closureFunc1();//输出: hello
Copier après la connexion


2.2 Variables locales référencées dans les fonctions anonymes

function closureFunc2(){    $num = 1;    $func = function(){        echo $num;
    };    $func();
}
closureFunc2();//Notice: Undefined variable: num
Copier après la connexion


Après la fonction ci-dessus est 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. Pour le moment, nous devons citer un mot-clé PHP. Le code est le suivant

function closureFunc2(){    $num = 1;    $func = function() use($num){        echo $num;
    };    $func();
}
closureFunc2();//输出: 1
Copier après la connexion
<🎜. >


2.3 Renvoyer la fonction anonyme

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


2.4 Comment 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
Copier après la connexion


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
Copier après la connexion


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
Copier après la connexion


2.6 Passer des fonctions anonymes en paramètres

function callFunc($func){    $func("argv");
}
callFunc(function($str){    echo $str;
})//输出:
// argv
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal