上記の私の質問に関する簡単な例が見つかりません: メソッドチェーンの終わりを検出するにはどうすればよいですか?
たとえば 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 )。