php 方法返回的匿名函数的内联执行:$obj->method()()

js5cn81o  于 2023-10-15  发布在  PHP
关注(0)|答案(3)|浏览(118)

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

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)写的,可能有一些类型转换?我正在寻找一个优雅的方式从来电者的Angular 来看。
在数学中,东西是在原地评估的:

(3 + 2)(5 + 1)
(5)(6)
30

而不是引入不必要的变量f1:

f1 = (3 + 2)
f1(5 + 1)

...

hyrbngr7

hyrbngr71#

您的函数可以被视为回调函数,因此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());
nukf8bse

nukf8bse2#

看看这个并确定你的PHP版本:Anonymous functions

eanckbw9

eanckbw93#

php 4.4失败
php版本5.6支持$f(),但在$f()()时失败
php版本高于5.6都可以,所以今天,可以说这些代码段工作正常。

相关问题