在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()无效(解析错误),所以我想知道是否有可能以其他方式实现这一点。嗨,你可以看看我对这个问题的回答:不管其他问题()中说了什么,我确信这是可能的,但是我现在找不到咒语。可以说这很难看,不值得努力。