PHPで1つのコマンド(同じ行)でインスタンスを作成し、メソッドを呼び出すことは可能ですか? [複製]

StackOverflow https://stackoverflow.com/questions/1439998

  •  10-07-2019
  •  | 
  •  

質問

  

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

それは可能ですか?

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

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

これは単なる構文上の砂糖であるため、実際にはお勧めしません。 1行だけを切り取って読みやすくしています。

要求した機能は、PHP 5.4から利用できます。 PHP 5.4の新機能のリストは次のとおりです。

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

そして、新機能リストの関連部分:

  

インスタンス化時のクラスメンバーアクセスが追加されました。 (新しいFoo)-> bar()。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top