3

重複の可能性:
PHP では、オブジェクトのインスタンス化とメソッドの呼び出しを同じ行で実行できますか?

出来ますか?

通常、次の 2 行が必要です。

$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();

ただし、これは単なるシンタックス シュガーであるため、あまりお勧めしません。1行だけ切り取って読みやすさを失っています。

于 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 に答える