在PHP5.3以前使用匿名函数,可以通过create_function()来创建匿名函数,
$func=create_function('$a,$b', '
if ($a == $b)
{
return 0;
}
return ($a< $b) ? -1 : 1;
');
在PHP5.3中,可以直接使用lamda表达式
$func=function($a,$b)
{
if ($a == $b)
{
return 0;
}
return ($a< $b) ? -1 : 1;
}
然后可以作为参数传入其他函数,如:usort($arr,$func); 也可以直接调用,$func(3,4);
在PHP5.3中使用闭包
function foo($arg1)
{
$var=3;
$inner=function($innerArg) use($arg1,$var)
{
return $innerArg+$arg1/$var;
};
echo $inner(5);
}
闭包被当成一个内置类,但是没有javascript那么灵活,这个类不能有属性。$inner->a=5;是非法的。







