това се нарича верижно свързване на методи и се извършва чрез връщане на препратка към класа ( $this ) или друг обект на клас от тези функции. След това можете да извикате метод на върнатия обект.
Ето един прост пример.
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();
изход:
'hello'
Само за да обясня малко повече, горният код $a->bar('hello')->out(); е приблизително еквивалентно на това:
$a = new foo();
$b = $a->bar('hello'); //$a and $b are the same instance of the object
$b->out();
Сега, защото bar() връща $this можем да го присвоим на $b както по-горе и след това извикайте out() . Но $a и $b и двете препращат към един и същ екземпляр на foo обект, защото върнахме $this от bar() . Така че няма нужда от тази допълнителна "фалшива" променлива, тъй като можем просто да препращаме към връщащия обект директно за следващото извикване. Това работи с всеки обект, който се връща от метод (не само $this), но очевидно тогава следващото извикване във веригата е срещу върнатия обект.