2010-05-28 12 views
8

Ich habe versucht, eine gute Einführung in kettenfähige OOP-Objekte in PHP zu finden, aber ohne ein gutes Ergebnis.PHP OOP: Verkettbare Objekte?

Wie kann so etwas gemacht werden?

$this->className->add('1','value'); 
$this->className->type('string'); 
$this->classname->doStuff(); 

Oder auch: $this->className->add('1','value')->type('string')->doStuff();

Vielen Dank!

Antwort

17

Der Schlüssel ist das Objekt selbst innerhalb jeder Methode zurückzukehren:

class Foo { 
    function add($arg1, $arg2) { 
     // … 
     return $this; 
    } 
    function type($arg1) { 
     // … 
     return $this; 
    } 
    function doStuff() { 
     // … 
     return $this; 
    } 
} 

Jede Methode, die das Objekt selbst zurückgibt, kann als Zwischenprodukt bei einem Verfahren Kette verwendet werden. Weitere Details finden Sie unter Wikipedia’s article on Method chaining.

+0

Erstaunlich, wie einfach, dies zu tun war. Hatte keine Ahnung. Vielen Dank Gumbo! – Industrial

11

nur $ dieses in dem Add zurückkehren() und Typ() Methoden:

function add() { 
    // other code 
    return $this; 
} 
5

Ein anderer Begriff dafür ist die Fluent Interface

+0

Hinzufügen einer Notiz: Die Verkettung von Methoden ist nur eine Technik, um eine flüssige Oberfläche zu erstellen. – koen