PHP ООП: Цепные объекты? - PullRequest
8 голосов
/ 28 мая 2010

Я попытался найти хорошее представление о цепочечных объектно-ориентированных объектах в PHP, но пока безрезультатно.

Как можно сделать что-то подобное?

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

Или даже: $this->className->add('1','value')->type('string')->doStuff();

Большое спасибо!

Ответы [ 3 ]

17 голосов
/ 28 мая 2010

Ключ должен вернуть сам объект в каждом методе:

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

Каждый метод, который возвращает сам объект, может использоваться в качестве промежуточного звена в цепочке методов. См. статью Википедии о Метод цепочки для получения дополнительной информации.

11 голосов
/ 28 мая 2010

просто верните $ this в методах add () и type ():

function add() {
    // other code
    return $this;
}
5 голосов
/ 28 мая 2010

Другим термином для этого является Свободный интерфейс

...