dette kaldes metodekæde og gøres ved at returnere en reference til klassen( $this ), eller et andet klasseobjekt fra disse funktioner. Så kan du kalde en metode på det returnerede objekt.
Her er et simpelt eksempel.
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();
output:
'hello'
Bare for at forklare lidt mere, ovenstående kode $a->bar('hello')->out();
svarer nogenlunde til at gøre dette:
$a = new foo();
$b = $a->bar('hello'); //$a and $b are the same instance of the object
$b->out();
Nu fordi bar()
returnerer $this
vi kunne tildele den til $b
som ovenfor og kald derefter out()
. Men $a
og $b
begge refererer til den samme forekomst af foo
objekt, fordi vi returnerede $this
fra bar()
. Så der er ikke behov for denne ekstra "uægte" variabel, da vi bare kan referere returobjektet direkte til det næste kald. Dette virker med ethvert objekt, der returneres fra en metode (ikke kun $this), men selvfølgelig er det næste kald i kæden mod det returnerede objekt.