8

我试图在 PHP 中找到关于可链接 OOP 对象的一个​​很好的介绍,但还没有任何好的结果。

这样的事情怎么能做到?

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

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

非常感谢!

4

3 回答 3

17

关键是在每个方法中返回对象本身:

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

每个返回对象本身的方法都可以用作方法链中的中间体。有关更多详细信息,请参阅Wikipedia 关于方法链接的文章。

于 2010-05-28T14:39:05.553 回答
11

只需在 add() 和 type() 方法中返回 $this:

function add() {
    // other code
    return $this;
}
于 2010-05-28T14:39:18.300 回答
5

另一个术语是Fluent Interface

于 2010-05-28T15:07:28.523 回答