Только недавно осваивал подобное. Так как такие "каскады" функций часто встречаются во фреймворках.
Суть в том что каждый предыдущий метод должен возвращать объект $this (либо другой объект), общая суть - метод может вызывать только объект поэтому конструкция $x->metod()->metod2(); означает что первая функция $x->metod() возвращает некий объект и уже у него мы вызываем второй метод. Вот мой пример:
class Mailer {
public $from;
public $to;
public $subject;
public $message;
public function setFrom(){
$this->from = 'my@mail.ru';
return $this;
}
public function setTo(){
$this->to = 'you@mail.ru';
return $this;
}
public function setSub(){
$this->subject = 'Hello!';
return $this;
}
public function setMess(){
$this->message = 'Good morning friend.';
return;
}
}
$x = new Mailer();
$x->setFrom()->setTo()->setSub()->setMess();
// Смотрим что получилось:
echo $x->from . "<br>";
echo $x->to . "<br>";
echo $x->subject . "<br>";
echo $x->message . "<br>";