【问题标题】:How to create PHP method linking?如何创建 PHP 方法链接?
【发布时间】:2010-06-02 22:46:50
【问题描述】:

我见过其他这样做的对象:

$obj->method1()->method2();

我该怎么做?每个函数只是修改一个对象的指针还是返回一个指针?

我不知道这种风格的正确术语——如果有人能帮助我,那就太好了。

【问题讨论】:

    标签: php object method-chaining


    【解决方案1】:

    这是通过在每个函数的末尾返回$this 来实现的,从而给出一个可链接的引用。

    class MyClass {
        public function method1() {
            //...
            return $this;
        }
        public function method2() {
            //...
            return $this;
        }
    }
    

    【讨论】:

    • 同理,如果我返回另一个对象,它也可以被链接?在我的具体情况下,我返回了一个 MySQLi 准备好的语句,我想我可以立即对其执行 bind_param 吗?
    • 是的。请记住,在一个链中返回许多不同的对象会使您的 API 使用起来非常混乱。可能值得输入额外的行而不是将链转移到另一个对象。
    【解决方案2】:

    流体界面。

    只需将对象的 method1() 设置为返回 $this

    【讨论】:

      【解决方案3】:

      假设你有一个 Person 类。你会让你的方法做这样的事情:

      public function setName($name)
      {
          $this->name = $name;
          return $this; // We now return $this (the Person)
      }
      

      下载 Zend Framework 并检查部分代码 - 您可以从中学到很多东西。

      【讨论】:

        【解决方案4】:

        我将此称为方法链接。见http://www.devshed.com/c/a/PHP/Method-Chaining-in-PHP-5/1/

        也在你的方法中

        public function method1()
           // do stuff
        
           return $this;
        }
        

        【讨论】:

          猜你喜欢
          • 2023-03-13
          • 1970-01-01
          • 2021-01-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-21
          • 1970-01-01
          相关资源
          最近更新 更多