【发布时间】:2011-05-11 02:27:54
【问题描述】:
是否可以将匿名函数作为参数传递,并让它立即执行,从而传递函数的return 值?
function myFunction(Array $data){
print_r($data);
}
myFunction(function(){
$data = array(
'fruit' => 'apple',
'vegetable' => 'broccoli',
'other' => 'canned soup');
return $data;
});
由于Array 类型提示,这会引发错误,抱怨传递了一个对象。好吧,如果我删除类型提示,它当然会吐出Closure Object,而不是我想要的结果。我知道我在技术上将Closure 的对象实例传递给myFunction,但是,我几乎可以肯定我已经在其他地方看到了这一点。这可能吗?如果是这样,我做错了什么?
为了便于讨论,我无法修改要传递闭包的函数。
tl;dr:如何将匿名函数声明作为参数传递,从而导致返回值作为参数传递。
PS:如果不清楚,想要的输出是:
Array
(
[fruit] => apple
[vegetable] => broccoli
[other] => canned soup
)
【问题讨论】:
-
你可能已经在 Javascript 中看到了
(function () { })(),但是 PHP 的函数没有那么灵活。
标签: php closures anonymous-function argument-passing