2010-04-06 41 views
5

我找不到一個關於上述問題的簡單示例:如何檢測方法鏈的結束?在PHP中檢測方法鏈的結束?

我只是看着Zend_Db_Select例如,但這個太複雜,我想這個簡單的問題。

是否有可能在PHP中捕捉方法鏈的'結尾'?

感謝, FABRIK

回答

2

號這是不可能的。

Zend_Db_Select不是檢測方法鏈的結束。你鏈接的每個方法只返回$this,當你停止鏈接時,你停止鏈接。沒有神奇的東西說:嘿,這是鏈條的結束。

例子:

$foo = $this->is()->a()->method()->chain(); 

如果所有方法return $this,然後$foo將包含chain()的結果,所以$this一次。你可以繼續從那裏鏈接。當然,除了返回$this之外,這些方法還可以做其他事情,例如,設置內部狀態 - 但這確實是關於Method chaining

如果您的代碼需要知道它已達到鏈的末端,則必須在運行鏈之前設置鏈,例如, Chain of Responsibility pattern

+0

也許我需要相信你,但你怎麼能解釋Zend_Db_Select只是做它? – fabrik 2010-04-06 09:48:02

+0

@fabrik查看更新 – Gordon 2010-04-06 09:52:45

+0

看起來我只是再次忽略它。所以這一個(Zend_Db_Select)是最糟糕的例子,因爲它不會提取任何只是構建查詢的東西。我對嗎? – fabrik 2010-04-06 09:55:06