2 回答
TA贡献1874条经验 获得超12个赞
匿名函数,也称为闭包,允许创建没有指定名称的函数。它们作为回调参数的值最有用,但它们还有许多其他用途。
匿名函数使用 Closure 类实现
还有一个代码示例:
<?php
$greet = function($name)
{
printf("Hello %s\r\n", $name);
};
$greet('World');
$greet('PHP');
?>
还有一个代码示例,为了完整起见,关于如何将函数名作为参数传递,并在后面调用它:
<?php
function here() {
print 'here';
}
function dynamo($name) {
$name();
}
//Will work
dynamo('here');
//Will fail
dynamo('not_here');
TA贡献1809条经验 获得超8个赞
所以随着对匿名函数的理解(感谢Lucas Meine),我发现你可以直接执行一个函数,方法是用括号括起来,后面跟着参数括号,这取决于你是否想给低级函数一些主要上下文之外的变量。
在以下所有示例中,输出var_dump为42。
没有可变参数的例子
// the function that should later be called
function myFunction($test){
var_dump($test);
}
// function call with a executed function as parameter
myFunction((function(){
return 42;
})());
带有可变参数的示例
$someVar = 42;
function myFunction($test){
var_dump($test);
}
myFunction((function($tmp){
return $tmp;
})($someVar));
或与use声明
$someVar = 42;
function myFunction($test){
var_dump($test);
}
myFunction((function() use ($someVar){
return $someVar;
})());
- 2 回答
- 0 关注
- 176 浏览
添加回答
举报