在PHP中调用内联函数

时间:2014-02-07 08:51:49

标签: php functional-programming inline

当一个方法返回一个函数时,可以像这样调用它:

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)

...

2 个答案:

答案 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