我这里是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();
但是那看起来实在太丑陋了,而且有些破坏了函数对象的意义。我只是想知道是否有更好(或者官方)的方法。
$this->a()
可以是方法a
或成员$a
。在 PHP 中,这两者分别被严格区分(不像 JavaScript)。 - igorw