PHP OOP: chainable nesneler?

3 Cevap php

Ben henüz PHP chainable OOP nesneler üzerinde iyi bir giriş bulmaya çalıştı, ancak herhangi bir iyi sonuç elde edilemedi.

Böyle bir şey nasıl yapılabilir?

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

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

Thanks a lot!

3 Cevap

Anahtar, her yöntemin içindeki nesnenin kendisini döndürmek için:

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

Nesnenin kendisini döndüren her yöntem olup, yöntem, bir zincir içinde bir ara ürün olarak kullanılabilir. Wikipedia’s article on Method chaining biraz daha fazla bilgi için bkz.

sadece (eklenti dolar bu dönüş) ve tipi () yöntemleri:

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

Bunun için başka bir terim Fluent Interface olduğunu