2010-06-02 162 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框架和檢查代碼的某些部分 - 你可以從那裏學到很多東西。