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;
    }
}

オブジェクト自体を返すすべてのメソッドは、メソッド チェーンの中間として使用できます。詳細については、ウィキペディアのメソッド チェーンに関する記事を参照してください。

于 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 に答える