在PHP中检测方法链的结束?

时间:2010-04-06 09:39:52

标签: php fluent-interface method-chaining

我无法找到一个关于上述问题的简单示例:如何检测方法链的结束?

我只是看了Zend_Db_Select,但是我认为这个问题太复杂了。

是否有可能在PHP中捕获方法链的“结束”?

感谢, FABRIK

1 个答案:

答案 0 :(得分:2)

没有。这是不可能的。

Zend_Db_Select没有检测方法链的结尾。您链接的每个方法只返回$this,当您停止链接时,您停止链接。没有什么神奇的东西可以说:嘿,这是链的终点

示例:

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

如果所有方法return $this,则$foo将包含chain()的结果,那么$this将再次包含$this。你可以从那里继续链接。当然,除了返回{{1}}之外,这些方法还会做其他事情,例如设置内部状态 - 但实际上只有Method chaining

如果您的代码需要知道它已到达链的末尾,则必须在运行链之前设置链,例如: Chain of Responsibility pattern