Maison > développement back-end > tutoriel php > Fonctions anonymes et utilisation de la fermeture en php

Fonctions anonymes et utilisation de la fermeture en php

墨辰丷
Libérer: 2023-03-25 20:24:01
original
1423 Les gens l'ont consulté

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(){

    ....

 };
Copier après la connexion

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



 $closureFunc = function($str){

   echo $str;

  };  $closureFunc("hello world!");
Copier après la connexion


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


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


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


 2.3  返回匿名函数



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


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


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

Fonctions anonymes et utilisation de la fermeture en php

看上面的输入结果,显然没有达到目的, 其实只要加一个 & 引用符号就可以了



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 把匿名函数当作参数传递



function callFunc($func){    $func("argv");
}

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

相关推荐:

关于JavaScript 闭包的相关知识的了解和使用

js闭包使用详解

关于Python闭包机制的深入理解

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