【问题标题】:Why return $this in setter methods?为什么在 setter 方法中返回 $this?
【发布时间】:2012-06-19 20:08:49
【问题描述】:

检查 Zend 框架,我发现所有 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。而且它不仅适用于 setter,还有其他返回 $this 的操作方法:

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

为什么需要这个?返回$this 有什么作用?有什么特殊含义吗?

【问题讨论】:

  • 返回$(this) 表示可以链接方法,例如$myClass->method_1($x)->method_2($y)
  • 我过去也注意到了这一点,从没想过要问这个问题。谢谢,我现在有了答案。

标签: php zend-framework return getter-setter


【解决方案1】:

return $this 允许链接方法,例如:

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

【讨论】:

    【解决方案2】:

    这样就可以像这样“链接”对象上的方法调用。

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

    【讨论】:

    • 我知道这条评论是在 2012 年发表的,它的主要目的是演示链式方法的使用,但对于所有刚刚了解这一点的新手:请不要将所有这些空格放在中间! :)
    猜你喜欢
    • 2022-09-30
    • 1970-01-01
    • 2017-07-08
    • 2016-04-06
    • 2017-10-06
    • 2011-05-22
    • 2021-10-11
    • 2020-12-05
    • 2012-04-26
    相关资源
    最近更新 更多