php闭包函数简析
闭包函数(closures)也叫匿名函数,使用js的童鞋应该比较熟悉。PHP5.3开始引入了闭包的特性。
声明一个匿名函数是:
$func = function() {
}; //带结束符
匿名函数因为没有名字,如果要使用它,需要将其返回给一个变量。
在闭包函数里,如果要用到上文定义的一个变量,需要使用use关键字。直接使用变量是不行的。
<?php
$arr = [1,2,3];
$max = 2;
//匿名函数第一个括号里的参数是调用时赋予的。use里的参数是来自父类作用域的。
$res = array_map(function($v1) use ($max){
if($max > 1){
return $v1 *= 2;
}
}, $arr);
var_dump($res);
结果:
array (size=3)
0 => int 2
1 => int 4
2 => int 6
PHP闭包的特性并没有太大惊喜,其实用CLASS就可以实现类似甚至强大得多的功能,更不能和js的闭包相提并论,只能期待PHP以后对闭包支持的改进。不过匿名函数还是挺有用的,比如在使用array_map、preg_replace_callback等之类的函数可以不用在外部声明回调函数了。使用闭包可以优雅的写PHP代码。
参考:
PHP闭包(Closure)初探 - 豆浆油条Melon的个人页面 - 开源中国社区
http://my.oschina.net/melonol/blog/126694
(本文完)
本文优先在公众号"飞鸿影的博客(fhyblog)"发布,欢迎关注公众号及时获取最新文章推送!
本文优先在公众号"飞鸿影的博客(fhyblog)"发布,欢迎关注公众号及时获取最新文章推送!
![](https://images2015.cnblogs.com/blog/663847/201703/663847-20170331215930477-1406562582.jpg)
作者:飞鸿影
出处:http://52fhy.cnblogs.com/
版权申明:没有标明转载或特殊申明均为作者原创。本文采用以下协议进行授权,自由转载 - 非商用 - 非衍生 - 保持署名 | Creative Commons BY-NC-ND 3.0,转载请注明作者及出处。
![](https://images2018.cnblogs.com/blog/663847/201805/663847-20180515232241445-706573186.png)