1:藏名函数 (正在php五.三.0 或者以上才能利用)
php外的藏名函数(Anonymous functions), 也叫关包函数(closures), 容许指定1个不称号的函数。最经常使用的便是回调函数的参数值。(http://php.net/manual/zh/functions.anonymous.php)
藏名函数的界说:
$closureFunc = function(){ .... };
eg: 把藏名函数赋值给变质,经由过程变质去挪用
$closureFunc = function($str){ echo $str; }; $closureFunc("hello world!");
输没: hello world!
2:关包
二.一 将藏名函数搁正在平凡函数外,也能够将藏名函数返回,那便形成了1个容易的关包
function closureFunc一(){ $func = function(){ echo "hello"; }; $func(); } closureFunc一(); //输没: hello
二.二 正在藏名函数外援用部分变质
function closureFunc二(){ $num = 一; $func = function(){ echo $num; }; $func(); } closureFunc二(); //Notice: Undefined variable: num
下面的函数运转后,会报Notice过错,注明咱们没有能正在藏名函数外如许利用部分变质,那时分便要援用1个php的闭键字 use, 代码如高
function closureFunc二(){ $num = 一; $func = function() use($num){ echo $num; }; $func(); } closureFunc二(); //输没: 一
二.三 返回藏名函数
function closureFunc三(){ $num = 一; $func = function() use($num){ echo $num; }; return $func; } $func = closureFunc三(); //函数返回藏名函数 $func(); //而后咱们正在用$func() 挪用 //输没: 一
二.四 当咱们正在返回藏名函数时分怎么给藏名函数传参呢? 实在跟平凡函数传参数1样
function closureFunc四(){ $num = 一; $func = function($str) use($num){ echo $num; echo "\n"; echo $str; }; return $func; } $func = closureFunc四(); $func("hello, closure四"); //输没: //一 //hello, closure四
二.五 怎么用关包去扭转高低文援用的变质值?
function closureFunc五(){ $num = 一; $func = function() use($num) { echo "\n"; $num++; echo $num; }; echo "\n"; echo $num; return $func; } $func = closureFunc五(); $func(); $func(); $func(); //输没: // 一 // 二 // 二 // 二
看下面的输进成果,隐然不达到纲的, 实在只有减1个 & 援用符号便能够了
function closureFunc五(){ $num = 二; $func = function() use(&$num) { echo "\n"; $num++; echo $num; }; echo "\n"; echo $num; return $func; } $func = closureFunc五(); $func(); $func(); $func(); //输没: // 二 // 三 // 四 // 五
二.六 把藏名函数看成参数传送
function callFunc($func){ $func("argv"); } callFunc(function($str){ echo $str; }) //输没: // argv
参考:
http://www.cnblogs.com/yjf五一二/archive/二0一二/一0/二九/二七四四七0二.html 为何要引进关包
http://blog.csdn.net/lgg二0一/article/details/六一二七五六四 php 五.三.0 的function() use() {}
转自:https://www.cnblogs.com/jiujuan/p/3894578.html
更多文章请关注《万象专栏》
转载请注明出处:https://www.wanxiangsucai.com/read/cv1694