代码之家  ›  专栏  ›  技术社区  ›  fabrik

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

  •  5
  • fabrik  · 技术社区  · 15 年前

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

    举个例子,我刚看到zend_db_select,但这个问题对于我想的这个简单问题来说太复杂了。

    是否可以在PHP中捕获方法链的“end”?

    谢谢, 法布里克

    1 回复  |  直到 15 年前
        1
  •  2
  •   Gordon Haim Evgi    15 年前

    不,这是不可能的。

    Zend_Db_Select 发现 方法链的结尾。你链上的每一个方法都会返回 $this 当你停止锁链,你就停止锁链。没有什么神奇的东西可以说: 嘿,这是链条的末端 .

    例子:

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

    如果所有方法 return $this ,然后 $foo 将包含以下结果 chain() 如此 $此 再一次。你可以从那里继续用链子拴着。当然,这些方法除了返回还可以做其他的事情 $此 例如,设置内部状态-但实际上这就是 Method chaining .

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