对新PHP对象的即时1行魔术方法调用
我想立即对一个新构造的对象调用一个神奇的方法(对新PHP对象的即时1行魔术方法调用,php,oop,magic-function,Php,Oop,Magic Function,我想立即对一个新构造的对象调用一个神奇的方法(\u call())。例如: class Foo { public function __call($method,$args) { echo "You were looking for the method $method.\n"; } } 理想(但得到一个解析错误): 工作: $foo = new Foo(); $foo = $foo->bar(); 这可能吗?我知道PHP5.4带来了即时的单行对象方法调
\u call()
)。例如:
class Foo {
public function __call($method,$args) {
echo "You were looking for the method $method.\n";
}
}
理想(但得到一个解析错误):
工作:
$foo = new Foo();
$foo = $foo->bar();
这可能吗?我知道PHP5.4带来了即时的单行对象方法调用(),所以我不知道为什么这样做不起作用。您实际上只缺少了一对
()
方法,这是有效的:
$foo = (new Foo())->bar(); // this works.
在PHP 5.4变更日志中,它写道:
已添加实例化时的类成员访问权限,例如(新建
Foo)->bar()
实际上,您只缺少了一对
()
,这是有效的:
$foo = (new Foo())->bar(); // this works.
在PHP 5.4变更日志中,它写道:
已添加实例化时的类成员访问权限,例如(新建
Foo)->bar()
您希望
$foo
的值是foo
类的新实例还是方法bar
的返回结果?方法bar
的结果@complex857有一个有效的答案。您希望$foo
的值是foo
类的新实例还是方法bar
的返回结果?方法bar
的结果@complex857有一个有效答案。是。你确定你使用的是PHP5.4吗?“这是你的问题”-杰米·海尼曼,我的错,谢谢!对你确定你使用的是PHP5.4吗?“这是你的问题”-杰米·海尼曼,我的错,谢谢!