Php 我可以在对象的新实例上使用箭头操作符吗?

Php 我可以在对象的新实例上使用箭头操作符吗?,php,Php,以下PHP代码有效: $a = new MyClass(); $a->myFunction(); 有没有一种有效的方法来结合这两种说法?我的第一次尝试会导致语法错误,这是可以理解的: new MyClass()->myFunction(); 然后,我在创建的对象周围添加了括号,这在PHP5.4.17上运行良好,但在PHP5.3.26上没有: (new MyClass())->myFunction(); 这个语法在什么时候被接受,或者我应该放弃这个想法,只使用两行。我的实际

以下PHP代码有效:

$a = new MyClass();
$a->myFunction();
有没有一种有效的方法来结合这两种说法?我的第一次尝试会导致语法错误,这是可以理解的:

new MyClass()->myFunction();
然后,我在创建的对象周围添加了括号,这在PHP5.4.17上运行良好,但在PHP5.3.26上没有:

(new MyClass())->myFunction();
这个语法在什么时候被接受,或者我应该放弃这个想法,只使用两行。我的实际用例更复杂,如果我不必一直创建单用途变量,它会使代码更整洁

我在文档中找不到任何与此相关的内容

(new MyClass())->myFunction();

从PHP5.4开始就很好。您可以使用它,但我认为两行方法更干净,向后兼容较旧的PHP版本,不会让阅读您代码的程序员感到困惑:)

添加到PHP5.4.0中。已添加实例化时的类成员访问权限,例如
(new Foo)->bar()


这个答案直接来自于这里,也有人问过

您要求的功能可从PHP5.4获得。以下是PHP 5.4中的新功能列表:

以及新功能列表中的相关部分:

已添加实例化时的类成员访问,例如:(new Foo)->bar()

PHP 5.4中引入了
(新的MyClass())->myFunction()
表示法(包括一些其他简写表示法,请参阅)

一种解决方法(我不建议在所有情况下都滥用此方法)是在MyClass中使用静态方法:

class MyClass {
    public static newInstance() {
        return new self();
    }
    public function myFunction() {}
}

MyClass::newInstance()->myFunction();

我的错。似乎我没有用正确的术语找到它。