isso é chamado de encadeamento de métodos e é feito retornando uma referência à classe ( $this ), ou outro objeto de classe dessas funções. Então você pode chamar um método no objeto retornado.
Aqui está um exemplo simples.
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();
saída:
'hello'
Só para explicar um pouco mais, o código acima
$a->bar('hello')->out(); é aproximadamente equivalente a fazer isso: $a = new foo();
$b = $a->bar('hello'); //$a and $b are the same instance of the object
$b->out();
Agora porque
bar() retorna $this poderíamos atribuí-lo a $b como acima e então chame out() . Mas $a e $b ambos referenciam a mesma instância do foo objeto, porque retornamos $this de bar() . Portanto, não há necessidade dessa variável "espúria" extra, pois podemos apenas referenciar o objeto de retorno diretamente para a próxima chamada. Isso funciona com qualquer objeto que é retornado de um método (não apenas $this), mas obviamente a próxima chamada na cadeia é contra o objeto retornado.