5.4より前のバージョンのPHPでは、静的クラスを使用してオブジェクトをインスタンス化し、必要な関数をすぐに呼び出しました。次に例を示します。
$result = Foo::init()->bar();
上記の例では、静的関数init()
は、それが含まれているクラスをインスタンス化し、オブジェクトとして返します。これにより、メソッドチェーン機能が提供さbar()
れ、すべて1行のコードですぐに呼び出すことができます。静的関数は次のinit()
ようになります。
static public function init() {
$object = new self();
return $object;
}
PHP 5.4では、インスタンス化時のクラスメンバーアクセスのサポートが追加され、静的クラスを使用する代わりに、次のことができるようになりました。
$result = (new Foo)->bar();
私の質問:静的クラスを使用する私の古い方法は悪いですか?もしそうなら、なぜですか?PHPがインスタンス化でのクラスメンバーアクセスをサポートするようになったので、これはオブジェクトインスタンス化の直後にクラスメンバーにアクセスするためのより正しい方法ですか?