2010-05-28 4 views
8

J'ai essayé de trouver une bonne introduction sur les objets OOP chaînables en PHP, mais sans aucun résultat pour le moment.PHP OOP: objets chaînables?

Comment peut-on faire quelque chose comme ça?

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

Ou même: $this->className->add('1','value')->type('string')->doStuff();

Merci beaucoup!

Répondre

17

La clé est de retourner l'objet lui-même au sein de chaque procédé:

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

Chaque méthode, qui renvoie l'objet lui-même, peut être utilisé comme un intermédiaire dans une chaîne de procédé. Voir Wikipedia’s article on Method chaining pour plus de détails.

+0

incroyable comment cela a été facile à faire. Je n'avais aucune idée. Merci beaucoup Gumbo! – Industrial

11

juste revenir $ dans cette addition() et le type() méthodes:

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

Un autre terme pour cela est le Fluent Interface

+0

Ajout d'une note: le chaînage de méthodes n'est qu'une technique pour créer une interface fluide. – koen