我无法找到一个关于上述问题的简单示例:如何检测方法链的结束?
我只是看了Zend_Db_Select,但是我认为这个问题太复杂了。
是否有可能在PHP中捕获方法链的“结束”?
感谢, FABRIK
答案 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