4

まだ PHP-OOP 補助輪に乗っているので、この質問はfailblog.orgに属している可能性があります。=)

PHP でのメソッドチェーンの利点は何ですか?

これが重要かどうかはわかりませんが、メソッドを静的に呼び出します。例えば

$foo = Bar::get('sysop')->set('admin')->render();

私が読んだことから、返されるメソッドはすべて$thisチェーンすることができます。これがPHP5の新機能であることを知りました。まったく新しいオブジェクトをインスタンス化する(静的に呼び出す)必要がなく、クラスから必要ないくつかのメソッドを選択するだけで、速度が向上するように思えますか?

私はその権利を持っていますか?

4

3 に答える 3

6

特にバイト コード キャッシュを備えた運用サーバーでは、どちらの方法を使用してもパフォーマンスに大きなメリットはありません。

メソッドチェーンは、物事を書くためのより短い方法です。長いバージョンと比較してください:

$foo = Bar::get('sysop');
$foo -> set('admin');
$foo -> render();

ただし、いくつかの癖があります。典型的な IDE (Eclipse など) は、より長いバージョンのコードをオートコンプリートできますが (型がわかっている限り$foo)、動作するすべてのメソッドの戻り値の型を文書化する必要があります。ショートバージョン。

于 2009-12-29T19:55:35.513 に答える
1

それでもオブジェクトをインスタンス化します。変数に割り当てられることはありません。基本的に、匿名オブジェクトのメソッドを呼び出しているだけです。

サイクルの節約はごくわずかだと思いますが、割り当てられていないオブジェクトはこのコード行の直後に解放されると思うので、メモリを節約できる可能性があります (割り当てられたオブジェクトをnull使い終わったときに に設定することで同じことを達成できます) )。

メソッドチェーンを使用する主な理由は利便性のためです。1 行のコードで多くのことを行っています。個人的には、面倒で維持できないと思います。

于 2009-12-29T19:56:04.700 に答える