PHP OOP:可链接对象?

时间:2010-05-28 14:37:15

标签: php oop fluent-interface chainable

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

这样的事情怎么办?

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

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

非常感谢!

3 个答案:

答案 0 :(得分:17)

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

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

每个返回对象本身的方法都可以用作方法链中的中间件。有关更多详细信息,请参阅Wikipedia’s article on Method chaining

答案 1 :(得分:11)

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

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

答案 2 :(得分:5)

另一个术语是Fluent Interface