我想立即在新构建的对象上调用一个魔术方法(__call()
)。示例:
class Foo {
public function __call($method,$args) {
echo "You were looking for the method $method.'n";
}
}
理想(但出现解析错误):
$foo = new Foo()->bar(); // Fails :(
工作:
$foo = new Foo();
$foo = $foo->bar();
这可能吗?我知道PHP 5.4带来了立即的单行对象方法调用(http://docs.php.net/manual/en/migration54.new-features.php)所以我不知道为什么这不起作用。
您实际上只缺少一个()
对,这很有效:
$foo = (new Foo())->bar(); // this works.
在PHP 5.4的变更日志中,它写道:
已添加实例化时的类成员访问权限,例如(newFoo)->bar()。