18

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ますか?何か特別な意味がありますか?

4

2 に答える 2

47

return $this、次のようなメソッドの連鎖を可能にします。

$foo->bar('something')->baz()->myproperty
于 2012-06-17T16:35:13.297 に答える
4

これは、オブジェクトに対するメソッド呼び出しをこのように「チェーン」できるようにするためです。

$obj -> setFoo ('foo') -> setBar ('bar') -> setBaz ('baz') -> setFarble ('farble');
于 2012-06-17T16:36:24.060 に答える