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.