php的匿名函数怎么访问外部变量?
php的匿名函数怎么访问外部变量?请看图中的代码。红色框中的是匿名函数外定义的变量$file。如何在函数内部访问?...
php的匿名函数怎么访问外部变量? 请看图中的代码。红色框中的是匿名函数外定义的变量$file。 如何在函数内部访问?
展开
展开全部
使用create_function()创建"匿名"函数
前面提到PHP5.3中才才开始正式支持匿名函数,说到这里可能会有细心读者有意见了,因为有个函数是可以生成匿名函数的: create_function函数,在手册里可以查到这个函数在PHP4.1和PHP5中就有了,这个函数通常也能作为匿名回调函数使用,例如如下:
<?php
$array = array(1, 2, 3, 4);
array_walk($array, create_function('$value', 'echo $value'));
这段代码只是将数组中的值依次输出,当然也能做更多的事情。 那为什么这不算真正的匿名函数呢,我们先看看这个函数的返回值,这个函数返回一个字符串,通常我们可以像下面这样调用一个函数:
<?php
function a() {
echo 'function a';
}
$a = 'a';
$a();
我们在实现回调函数的时候也可以采用这样的方式,例如:
<?php
function do_something($callback) {
// doing
# ...
// done
$callback();
}
这样就能实现在函数do_something()执行完成之后调用$callback指定的函数。回到create_function函数的返回值:函数返回一个唯一的字符串函数名,出现错误的话则返回FALSE。这么说这个函数也只是动态的创建了一个函数,而这个函数是有函数名的,也就是说,其实这并不是匿名的。只是创建了一个全局唯一的函数而已。
前面提到PHP5.3中才才开始正式支持匿名函数,说到这里可能会有细心读者有意见了,因为有个函数是可以生成匿名函数的: create_function函数,在手册里可以查到这个函数在PHP4.1和PHP5中就有了,这个函数通常也能作为匿名回调函数使用,例如如下:
<?php
$array = array(1, 2, 3, 4);
array_walk($array, create_function('$value', 'echo $value'));
这段代码只是将数组中的值依次输出,当然也能做更多的事情。 那为什么这不算真正的匿名函数呢,我们先看看这个函数的返回值,这个函数返回一个字符串,通常我们可以像下面这样调用一个函数:
<?php
function a() {
echo 'function a';
}
$a = 'a';
$a();
我们在实现回调函数的时候也可以采用这样的方式,例如:
<?php
function do_something($callback) {
// doing
# ...
// done
$callback();
}
这样就能实现在函数do_something()执行完成之后调用$callback指定的函数。回到create_function函数的返回值:函数返回一个唯一的字符串函数名,出现错误的话则返回FALSE。这么说这个函数也只是动态的创建了一个函数,而这个函数是有函数名的,也就是说,其实这并不是匿名的。只是创建了一个全局唯一的函数而已。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |