dit wordt method chaining genoemd en wordt gedaan door een verwijzing naar de klasse( $this ) of een ander klasseobject van die functies te retourneren. Dan kun je een methode aanroepen op het geretourneerde object.
Hier is een eenvoudig voorbeeld.
class foo{
protected $_bar;
public function bar($value){
$this->_bar = $value;
return $this;
}
public function out(){
echo $this->_bar;
}
}
$a = new foo();
$a->bar('hello')->out();
uitgang:
'hello'
Om wat meer uit te leggen, de bovenstaande code $a->bar('hello')->out();
komt ongeveer overeen met dit:
$a = new foo();
$b = $a->bar('hello'); //$a and $b are the same instance of the object
$b->out();
Nu omdat bar()
retourneert $this
we kunnen het toewijzen aan $b
zoals hierboven en roep dan out()
. aan . Maar $a
en $b
beide verwijzen naar hetzelfde exemplaar van de foo
object, omdat we $this
. hebben geretourneerd van bar()
. Er is dus geen behoefte aan deze extra "onechte" variabele, omdat we gewoon rechtstreeks naar het return-object kunnen verwijzen voor de volgende aanroep. Dit werkt met elk object dat wordt geretourneerd door een methode (niet alleen $this), maar uiteraard is de volgende aanroep in de keten tegen het geretourneerde object.