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