当一个方法返回一个函数时,可以像这样调用它:
class AClass {
public function getFnc() {
$f = function() {
echo "hello from a function";
};
return $f;
}
}
在主叫方面,我们可以这样做:
$c = new AClass();
$f = $c->getFnc();
$f();
输出为hello from a function
,如前所述。
编写内联调用不会编译:
$c->getFnc()();
如何通过一些演员来内联(ish)?从呼叫者的角度来看,我正在寻找一种优雅的方式。
在数学中,东西是原位评估的:
(3 + 2)(5 + 1)
(5)(6)
30
而不是引入不必要的变量f1:
f1 = (3 + 2)
f1(5 + 1)
...
答案 0 :(得分:1)
您的函数可以被视为回调函数,因此call_user_func()
将用于调用返回的函数。您可以像这样调用函数...
http://be2.php.net/function.call-user-func
class AClass {
public function getFnc() {
$f = function() {
echo "hello from a function";
};
return $f;
}
}
$c = new AClass();
call_user_func($c->getFnc());
答案 1 :(得分:0)
看看这个并确定您的PHP版本: Anonymous functions