对新PHP对象的立即单行魔术方法调用


Immediate 1-line magic method call on new PHP object

我想立即在新构建的对象上调用一个魔术方法(__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()。