netman92
Ano, nazývá se to Fluent Interfaces a dá se to použít u metod, které by normálně nevracely hodnotu, či by vracení nějaké hodnoty bylo prakticky k ničemu -- např. settery. Celý fígl spočívá v tom, že metoda vrací referenci na vlastní instanci ($this):
<?php
class Foo
{
private $foo;
private $bar;
private $baz;
public function setFoo($foo)
{
$this->foo = $foo;
return $this;
}
public function setBar($bar)
{
$this->bar = $bar;
return $this;
}
public function setBaz($baz)
{
$this->baz = $baz;
return $this;
}
}
// nyní, když chceme vytvořit instanci Foo a zinicializovat všechny její hodnoty
// (tzn. foo, bar a baz), můžeme použít dva způsoby:
// 1) klasické volání:
$foo = new Foo;
$foo->setFoo("foo");
$foo->setBar("bar");
$foo->setBaz("baz");
// 2) jelikož settery vracejí referenci na vlastní instanci ($this), lze je zřetězit:
$foo = new Foo;
$foo->setFoo("foo")
->setBar("bar")
->setBaz("baz");