3

可能重复:
在 PHP 中,您可以在同一行实例化一个对象并调用一个方法吗?

是否可以?

通常,它需要两行:

$instance = new MyClass();
$variable = $instance->method();

在 PHP 中这样的事情可能吗?:

$variable = new MyClass()->method();

当然,第一个代码在可读性和代码干净等方面更好,但我只是好奇你是否可以缩小它。如果该方法返回另一个实例,也许它会很有用,例如:

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

在PHP中可以吗?

4

3 回答 3

3

之前回答:

在 PHP 中,你可以在同一行实例化一个对象并调用一个方法吗?

于 2009-09-17T16:49:52.060 回答
1

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

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

echo Foo::instance()->someMethod();

我真的不推荐这个,因为它只是语法糖。你只是删掉了一行并且失去了可读性。

于 2009-09-17T16:49:35.360 回答
1

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

http://docs.php.net/manual/en/migration54.new-features.php

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

添加了对实例化的类成员访问,例如 (new Foo)->bar()。

于 2012-04-09T12:13:36.500 回答