detta kallas metodkedja och görs genom att returnera en referens till klassen( $this ), eller ett annat klassobjekt från dessa funktioner. Sedan kan du anropa en metod på det returnerade objektet.
Här är ett enkelt exempel.
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();
utdata:
'hello'
Bara för att förklara lite mer, ovanstående kod $a->bar('hello')->out();
är ungefär lika med att göra detta:
$a = new foo();
$b = $a->bar('hello'); //$a and $b are the same instance of the object
$b->out();
Nu eftersom bar()
returnerar $this
vi skulle kunna tilldela den till $b
som ovan och anropa sedan out()
. Men $a
och $b
båda refererar till samma instans av foo
objekt, eftersom vi returnerade $this
från bar()
. Så det finns inget behov av denna extra "falska" variabel eftersom vi bara kan referera returobjektet direkt för nästa anrop. Detta fungerar med alla objekt som returneras från en metod (inte bara $this), men uppenbarligen är nästa anrop i kedjan mot det returnerade objektet.