2010-06-02 164 views
2

我已经看到了这样做的其他对象:如何创建PHP方法链接?

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

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

我不知道这种风格的适当术语 - 如果任何人都可以帮助我,那就太好了。

回答

5

这是通过在每个功能的端返回$this,从而使一个可链接的参考实现。

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

以同样的方式里面,如果我回到另一个对象,也可以链接?在我的具体情况下,我返回一个MySQLi准备好的语句,我想我可以立即做一个bind_param? – 2010-06-02 23:01:50

+0

是的。请记住,链中返回许多不同的对象可能会使您的API非常容易混淆。可能值得输入额外的行,而不是将链转移到另一个对象。 – 2010-06-02 23:04:48

+0

完全理解谢谢! :) – 2010-06-02 23:20:18

4

流体接口。

只需设置你的对象的方法一()返回$此

1

可以说你有一个Person类。你将有你的方法做这样的事情:

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

下载Zend框架和检查代码的某些部分 - 你可以从那里学到很多东西。