gpt4 book ai didi

php - 如何调用类内部成员变量的__invoke方法

转载 作者:可可西里 更新时间:2023-10-31 22:43:43 25 4
gpt4 key购买 nike

PHP 5.4.5,在这里。我正在尝试调用一个存储为其他对象成员的对象。像这样(非常粗略)

class A {
function __invoke () { ... }
}

class B {
private a = new A();
...
$this->a(); <-- runtime error here
}

当然,这会产生一个运行时错误,因为没有名为 a 的方法。但是如果我这样写调用:

($this->a)();

然后我得到一个语法错误。

当然可以写

$this->a->__invoke();

但这看起来丑陋得令人难以忍受,而且破坏了仿函数的意义。我只是想知道是否有更好的(或官方的)方法。

最佳答案

三种方式:

直接调用您已经提到的__invoke:

$this->a->__invoke();

通过分配给一个变量:

$a = $this->a;
$a();

通过使用call_user_func:

call_user_func($this->a);

最后一个可能是您要找的。它的好处是可以与任何可调用对象一起使用。

关于php - 如何调用类内部成员变量的__invoke方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12603316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com