Зачем возвращать $this в методах настройки?
Изучая Zend Framework, я обнаружил, что все методы настройки (из тех, которые я изучал) возвращают экземпляр класса, в котором он живет. Он не только задает значение, но и возвращает $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
? Имеет ли это какое-то особое значение?
17
2 answers
return $this
позволяет объединять в цепочку такие методы, как:
$foo->bar('something')->baz()->myproperty
39
Author: Sarfraz, 2016-09-18 03:22:38
Это делается для того, чтобы вызовы методов для объекта могли быть "скованы", как это.
$obj -> setFoo ('foo') -> setBar ('bar') -> setBaz ('baz') -> setFarble ('farble');
4
Author: GordonM, 2012-06-17 16:36:24