如何创建PHP方法链接?

如何创建PHP方法链接?,php,object,method-chaining,Php,Object,Method Chaining,我见过其他这样做的对象: $obj->method1()->method2(); 我该怎么做?每个函数只是修改对象的指针还是返回指针 我不知道这种风格的合适术语——如果有人能帮我,那就太好了。流体界面 只需将对象的method1()设置为返回$this这是通过在每个函数的末尾返回$this来实现的,从而提供一个可链接的引用 class MyClass { public function method1() { //... return $th

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

$obj->method1()->method2();
我该怎么做?每个函数只是修改对象的指针还是返回指针

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

流体界面


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

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

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

假设您有一个Person类。您将让您的方法执行以下操作:

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

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

我将其称为方法链接。看

也在你的方法里面

public function method1()
   // do stuff

   return $this;
}

同样,如果我返回另一个对象,它也可以被链接?在我的具体例子中,我返回一个MySQLi准备好的语句,我想我可以立即对它执行bind_参数?是的。请记住,在一个链中返回许多不同的对象可能会使您的API使用起来非常混乱。可能值得键入额外的行,而不是将链传输到另一个对象。