Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.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中,是否可以在一个命令(在同一行)中创建实例和调用方法?_Php_Object_Methods_Instance - Fatal编程技术网

在PHP中,是否可以在一个命令(在同一行)中创建实例和调用方法?

在PHP中,是否可以在一个命令(在同一行)中创建实例和调用方法?,php,object,methods,instance,Php,Object,Methods,Instance,可能重复: 可能吗 通常,它需要两条线: $instance = new MyClass(); $variable = $instance->method(); 在PHP中是否可能出现类似的情况 $variable = new MyClass()->method(); 当然,第一个代码在可读性和干净的代码等方面更好,但我只是好奇您是否可以缩小它。如果该方法返回另一个实例,例如: $instance = new MyClass()->methodThatReturnsIns

可能重复:

可能吗

通常,它需要两条线:

$instance = new MyClass();
$variable = $instance->method();
在PHP中是否可能出现类似的情况

$variable = new MyClass()->method();
当然,第一个代码在可读性和干净的代码等方面更好,但我只是好奇您是否可以缩小它。如果该方法返回另一个实例,例如:

$instance = new MyClass()->methodThatReturnsInstance();

在PHP中可能吗?

您可以创建一个静态方法来构造默认实例并返回它

class Foo
{
     public static function instance() { return new Foo(); }
     ...
}

echo Foo::instance()->someMethod();
我并不真的推荐这个,因为它只是语法上的糖。您只删掉了一行,因而失去了可读性。

前面的回答:


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

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

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


你自己也试过了吗???@Mark Rushakoff:代码new MyClass()->method()无效(解析错误),所以我想知道是否有可能以其他方式实现这一点。嗨,你可以看看我对这个问题的回答:不管其他问题()中说了什么,我确信这是可能的,但是我现在找不到咒语。可以说这很难看,不值得努力。