ООП PHP: объекты Chainable?

Я попытался найти хорошее введение на chainable объектах ООП в PHP, но без любого хорошего результата все же.

Как что-то вроде этого может быть сделано?

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

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

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

8
задан Charles 23 December 2012 в 10:35
поделиться

3 ответа

Ключ состоит в том, чтобы возвращать сам объект в каждом методе:

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

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

17
ответ дан 3 November 2019 в 13:08
поделиться

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

function add() {
    // other code
    return $this;
}
11
ответ дан 3 November 2019 в 13:08
поделиться

Другой термин для этого - Fluent Interface

5
ответ дан 3 November 2019 в 13:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: