我应该使用@return self,this还是当前的类?

luc*_*wxp 40 php documentation doc phpdoc

我有一个返回当前对象的方法,我该如何记录?

/**
 * set something
 *
 * @return this
 */
public function setSomething(){
            // ...
    return $this;
}
Run Code Online (Sandbox Code Playgroud)

或者我应该做的@return self还是@return Current_Class_Name

g .*_*g . 39

目前处于草案(PSR-5)PHP标准建议书(PSR)建议使用 @return $,以表示返回相同的实例.

$ this,此类型适用的元素与给定上下文中的当前类完全相同.因此,此类型是更严格的静态版本,此外,返回的实例不仅必须属于同一个类,还必须属于同一个实例.

此类型通常用作实现Fluent Interface设计模式的方法的返回值.

这种表示法目前被流行的IDE使用,例如PhpStorm和Netbeans.

  • 你的答案是误导性的,因为听起来这个PSR推荐`$ this`.我不认为这是真的.它只是*允许*它,就像`Current_Class_Name`和`self`一样. (3认同)
  • 请注意,PSR-5已被放弃. (2认同)

Ria*_*iaD 30

@return Current_Class_Name 肯定会工作,是我喜欢的.

@return self 某些程序也可以正常工作.

@return this 很糟糕,因为这不是一个类型名称.

  • 如果我想返回子类而不是我编写方法的基类怎么办? (10认同)
  • PhpStorm支持`@return self` (2认同)
  • 我不同意这个答案,`/** @return $this */` 是唯一真正流畅的 phpdoc 类型。虽然“@return Current_Class_Name”并不流畅,但在扩展类并从子类调用函数时您会注意到这一点。 (2认同)

MUR*_*LAT 7

/**
 * set something
 *
 * @return self
 */
public function setSomething(){
            // ...
    return $this;
}
Run Code Online (Sandbox Code Playgroud)

您可以使用"self"类型作为@param或@return ..

PHPDoc建议'self'在对象中引用self.

资料来源:http://www.phpdoc.org/docs/latest/references/phpdoc/types.html


小智 6

这个问题已经很老了,但我只是想与大家分享!

至少对于使用NetBeans 8.1的那些..这种表示法使代码自动完成在IDE中很好地工作:

/**
 * Method that returns $this instance (using late state binding)
 * @return static
 */
 public function iWillReturnMyself ( ) {
     return $this;
 }
Run Code Online (Sandbox Code Playgroud)

我对NetBeans8.1用户说至少,但也可以在旧版本和/或其他IDE上工作=]