php5.3中增加了匿名函数和闭包的支持。平常都是在javascript中才能使用得到的匿名函数和闭包现在在php5.3中也能使用了。
<?php
/* anonymous function */
$anonymous = function($str){
echo $str;
};
$anonymous("Hello World!/n");
/* end of anonymous function */
/* closure function */
function close($a)
{
return function($b) use($a){
echo $a.' - '.$b."/n";
};
}
$a = close('a');
$a('b');
$a('c');
/* end of closure function */
?>
在第一段代码中,我们并没有看到熟悉的 fucnction 函数名(){}的函数定义方式,而是类似javascript中函数字面量的定义方式。这就是php中的匿名函数,至于好处嘛,看家网上搜去吧。
在第二段代码中,就是php中的闭包,闭包的概念说起来有点抽,所以我这里就简单的说一下,具 体定义可以去百科或者维基上查看,在第二段代码中,我们调用函数close的时候传给了函数close参数‘a’,按理函数调用完毕之后函数中所使用的变 量都被销毁掉了,但是这里我们后面对close返回的函数的调用中却还能使用close调用时传递的参数‘a’,这就是所谓的闭包了,也就是说函数close内部的函数被外部引用而且其变量被内部函数引用时,close函数的变量并不会被垃圾收集器销毁,而是继续保存在内存可以被其内部函数继续引 用。好了,这个东西虽然我理解了,不过讲解并不会,这里有一篇讲解javascript闭包的文章,在太平洋电脑网论坛中的,还是讲的蛮清楚的,要了解的 可以好好看看。
此文章由 http://www.ositren.com 收集整理 ,地址为:
http://www.ositren.com/htmls/67545.html