Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对新PHP对象的即时1行魔术方法调用_Php_Oop_Magic Function - Fatal编程技术网

对新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吗?“这是你的问题”-杰米·海尼曼,我的错,谢谢!