在PHP中检测方法链的末端?

在PHP中检测方法链的末端?,php,fluent-interface,method-chaining,Php,Fluent Interface,Method Chaining,关于我上面的问题,我找不到一个简单的例子:如何检测方法链的末端 我只是看了一下Zend_Db_Select的例子,但这个问题对于这个简单的问题来说太复杂了 是否有可能在PHP中捕获方法链的“末端” 谢谢, 法布里克不,这是不可能的 Zend\u Db\u Select未检测到方法链的结尾。您链接的每个方法都只返回$this,当您停止链接时,您就停止了链接。没有什么神奇的东西会说:嘿,这是链条的尽头 例如: $foo = $this->is()->a()->method()-&g

关于我上面的问题,我找不到一个简单的例子:如何检测方法链的末端

我只是看了一下Zend_Db_Select的例子,但这个问题对于这个简单的问题来说太复杂了

是否有可能在PHP中捕获方法链的“末端”

谢谢,
法布里克

不,这是不可能的

Zend\u Db\u Select
未检测到方法链的结尾。您链接的每个方法都只返回
$this
,当您停止链接时,您就停止了链接。没有什么神奇的东西会说:嘿,这是链条的尽头

例如:

$foo = $this->is()->a()->method()->chain();
如果所有方法
都返回$this
,则
$foo
将包含
chain()
的结果,因此
再次返回$this
。你可以从那里继续锁链。当然,除了返回
$this
,这些方法还会做其他事情,例如设置内部状态,但这就是真正的意义所在


如果您的代码需要知道它已到达链的末端,则必须在运行它之前设置链,例如..

可能我需要相信您,但您如何解释Zend_Db_Select刚刚执行此操作?看起来我又一次忽略了它。所以这个(Zend_Db_Select)是最糟糕的例子,因为它不获取任何东西,只构建查询。我说的对吗?你在哪里看到Zend_Db_Select这样做的?由于不是每个Zend_Db_Select方法都返回$this,Zend_Db_Select实现了__toString(),我想你误解了发生的事情。@fabrik是的。或多或少它收集创建SQL查询所需的所有信息。但这并没有什么神奇之处。谢谢你把这个问题整理出来,并为这个不必要的问题感到抱歉。