8

I have tried to find a good introduction on chainable OOP objects in PHP, but without any good result yet.

How can something like this be done?

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

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

Thanks a lot!

3 Answers 3

17

The key is to return the object itself within each method:

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

Every method, that returns the object itself, can be used as an intermediate in a method chain. See Wikipedia’s article on Method chaining for some further details.

Sign up to request clarification or add additional context in comments.

1 Comment

Amazing how easy this was to do. Had no idea. Thanks a lot Gumbo!
11

just return $this in the add() and type() methods:

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

Comments

5

Another term for this is the Fluent Interface

1 Comment

Adding a note: method chaining is but one technique in creating a fluent interface.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.