連鎖可能なメソッドがオブジェクト参照を返すことを確認するだけで、別のメソッド呼び出しを結果に連鎖させることができます。
@Tim return $this
Cooper が示すように、または別の異なるオブジェクトへの参照を返すことができます。
class Hand
{
protected $numFingers = 5;
public function countFingers() { return $this->numFingers; }
}
class Arm
{
protected $hand;
public function getHand() { return $this->hand; }
}
$n = $body->getLeftArm() // returns object of type Arm
->getHand() // returns object of type Hand
->countFingers(); // returns integer
表示する PDO の例では、2 つの異なるオブジェクト タイプを使用しています。 メソッドを持つオブジェクトをPDO::query()
インスタンス化して返します。PDOStatement
fetch()
この手法は、流暢なインターフェース、特にドメイン固有言語のインターフェースを実装する場合にも使用できます。ただし、すべてのメソッド チェーンが流暢なインターフェイスであるとは限りません。
Martin Fowlerが 2005 年に流暢なインターフェイスについて書いたものを参照してください。彼は、このアイデアを思いついたとして、ドメイン駆動設計で有名なEric Evans を引用しています。