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

Fonctions anonymes et utilisation de la fermeture en php

墨辰丷
墨辰丷original
2018-05-15 14:25:211363parcourir

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

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


2.6 把匿名函数当作参数传递



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

callFunc(function($str){    echo $str;
})//输出:
// argv

相关推荐:

关于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!

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