我找不到关于上述问题的简单示例:如何检测方法链的结尾?
例如,我只是看了 Zend_Db_Select ,但是对于我认为这个简单的问题来说,这个太复杂了。
是否有可能在 PHP 中捕获方法链的“结束”?
谢谢,法布里克
我找不到关于上述问题的简单示例:如何检测方法链的结尾?
例如,我只是看了 Zend_Db_Select ,但是对于我认为这个简单的问题来说,这个太复杂了。
是否有可能在 PHP 中捕获方法链的“结束”?
谢谢,法布里克
不,这是不可能的。
Zend_Db_Select
不检测方法链的结束。您链接的每个方法都会返回$this
,当您停止链接时,您就停止了链接。没有什么神奇的东西可以说:嘿,这是链条的末端。
例子:
$foo = $this->is()->a()->method()->chain();
如果所有方法return $this
,$foo
则将包含的结果chain()
,同样如此$this
。您可以从那里继续链接。当然,除了返回之外,这些方法还会做其他事情$this
,例如设置内部状态——但这就是方法链接的全部内容。
如果您的代码需要知道它已到达链的末尾,则必须在运行它之前设置链,例如责任链模式。