cela s'appelle le chaînage de méthodes et se fait en renvoyant une référence à la classe ( $this ) ou à un autre objet de classe à partir de ces fonctions. Ensuite, vous pouvez appeler une méthode sur l'objet renvoyé.
Voici un exemple simple.
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();
sortie :
'hello'
Juste pour expliquer un peu plus, le code ci-dessus $a->bar('hello')->out();
est à peu près équivalent à faire ceci :
$a = new foo();
$b = $a->bar('hello'); //$a and $b are the same instance of the object
$b->out();
Maintenant parce que bar()
renvoie $this
nous pourrions l'attribuer à $b
comme ci-dessus, puis appelez out()
. Mais $a
et $b
les deux font référence à la même instance de foo
objet, car nous avons renvoyé $this
de bar()
. Il n'y a donc pas besoin de cette variable "fausse" supplémentaire car nous pouvons simplement référencer l'objet de retour directement pour le prochain appel. Cela fonctionne avec n'importe quel objet renvoyé par une méthode (pas seulement $this), mais évidemment, le prochain appel dans la chaîne est contre l'objet renvoyé.