Зачем возвращать $ this в методах setter?

Изучая Zend Framework, я обнаружил, что каждый метод setter любого из его классов (из тех, что я рассмотрел) возвращает экземпляр класса, в котором он живет. Не просто устанавливает какое-то значение, но устанавливает значение, а также возвращает $ this. Например:

/* Zend_Controller_Router */ public function setGlobalParam($name, $value) { $this->_globalParams[$name] = $value; return $this; } /* Zend_Controller_Request */ public function setBaseUrl($baseUrl = null) { // ... some code here ... $this->_baseUrl = rtrim($baseUrl, '/'); return $this; } /* Zend_Controller_Action */ public function setFrontController(Zend_Controller_Front $front) { $this->_frontController = $front; return $this; } 

И так далее. Каждый публичный сеттер возвращает $ this. И не только сеттеры, но и некоторые методы действий, они также возвращают $ this:

 public function addConfig(Zend_Config $config, $section = null) { // ... some code here ... return $this; } 

Зачем это нужно? Что такое возврат $ this? Имеет ли он какое-то особое значение?

return $this позволяет связывать такие методы, как:

 $foo->bar('something')->baz()->myproperty 

Это значит, что вызов метода на объект может быть «закованным», как это.

 $obj -> setFoo ('foo') -> setBar ('bar') -> setBaz ('baz') -> setFarble ('farble');