闭包函数(closures)也叫匿名函数,使用js的童鞋应该比较熟悉。PHP5.3开始引入了闭包的特性。
声明一个匿名函数是:
$func = function() { }; //带结束符
匿名函数因为没有名字,如果要使用它,需要将其返回给一个变量。
在闭包函数里,如果要用到上文定义的一个变量,需要使用use关键字。直接使用变量是不行的。
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的个人页面 - 开源中国社区