在 PHP 中调用内联函数

问题描述 投票:0回答:3

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

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)

...

php functional-programming inline
3个回答
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());

0
投票

看一下这个并确定您的 PHP 版本: 匿名函数


0
投票

php 4.4 版本失败

php 版本 5.6 执行

$f()
但失败于
$f()()

高于 5.6 的 php 版本可以同时执行这两种操作,所以今天,可以说这些代码片段工作正常..

© www.soinside.com 2019 - 2024. All rights reserved.