上記の私の質問に関する簡単な例が見つかりません: メソッドチェーンの終わりを検出するにはどうすればよいですか?
たとえば Zend_Db_Select を見ただけですが、これはこの単純な質問には複雑すぎると思います。
PHPでメソッドチェーンの「終わり」をキャッチすることは可能ですか?
ありがとう、ファブリック
上記の私の質問に関する簡単な例が見つかりません: メソッドチェーンの終わりを検出するにはどうすればよいですか?
たとえば Zend_Db_Select を見ただけですが、これはこの単純な質問には複雑すぎると思います。
PHPでメソッドチェーンの「終わり」をキャッチすることは可能ですか?
ありがとう、ファブリック
いいえ、できません。
Zend_Db_Selectメソッドチェーンの終わりを検出しません。連鎖するすべてのメソッドは単に戻り$this、連鎖を停止すると、連鎖が停止します。言う魔法のようなものはありません:ねえ、これはチェーンの終わりです.
例:
$foo = $this->is()->a()->method()->chain();
すべてのメソッドが の場合return $this、$fooの結果が含まれchain()ます$this。そこから連鎖し続けることができます。もちろん、メソッドは return 以外にも他のことを行います$this。たとえば、内部状態を設定します。
コードがチェーンの終わりに達したことを知る必要がある場合は、実行する前にチェーンをセットアップする必要があります (例: Chain of Responsibility pattern )。