PHPDoc:@return void必要?

是否真的有必要这样做:

/** * ... * * @return void */ 

我有很多方法没有返回值,在注释中放入类似的东西似乎是多余的。 它会被认为是不好的forms离开它?

如果文件中明确说明,则将其保留,但不是绝对必要的。 这是一个完全主观的决定。

就个人而言,我会离开它。

编辑
我纠正了。 经过一番Googlesearch, 维基百科页面说:

@return [types描述]这个标签不应该用于用void返回types定义的构造函数或方法。

phpdoc.org网站上说:

@return数据types说明
@return datatype1 | datatype2说明

@return标记用于logging函数或方法的返回值。 @returns是@return的别名,用于支持其他自动文档的标签格式

数据types应该是一个有效的PHPtypes (int,string,bool等),返回的对象types的类名,或者简单的“混合”。 如果要显式显示多个可能的返回types,请列出它们不带空格的pipe道分隔符(例如“@return int | string”)。 如果在@return标签中使用类名作为数据types,phpDocumentor将自动创build一个指向该类文档的链接。 另外,如果函数返回多个可能的值,使用|将它们分开 字符,phpDocumentor将parsing出返回值中的任何类名称。 phpDocumentor将显示未经修改的可选描述。

Sooo …基于这个,我想说的是排除这个空白。 至less不符合标准

根据phpDocumentor,@return无效是有效的:

http://www.phpdoc.org/docs/latest/guides/types.html#keywords

…此types通常只在定义方法或函数的返回types时使用。 基本定义是用这种types表示的元素不包含一个值,用户不应该依赖任何检索的值。

例如:

  /** * @return void */ function outputHello() { echo 'Hello world'; } 

在上面的例子中没有指定return语句,因此返回值没有确定。

资料来源: http : //www.phpdoc.org/docs/latest/for-users/phpdoc/types.html ( 存档页面 )。

我必须编辑我的答案,因为我最近学到的东西。

使用@return void而不是@return null具有非常特殊的含义,请考虑以下两个PHP代码示例。

 <?php /** * @return void */ function return_never() { echo "foo"; } /** * @return null|string */ function return_sometimes() { if ($this->condition()) { return "foo"; } } 

在第一个例子中,PHP实际上会返回NULL ,因为PHP总是返回NULL 。 但是返回的值对调用者没有用处,因为它没有说什么函数做了什么。 IDE可以使用@return void的logging信息来指示开发人员使用没有任何用途的返回值。

 <?php $foo1 = return_never(); $foo2 = return_sometimes(); 

第一个调用是没有意义的,因为variables总是包含NULL ,第二个可能实际包含某些东西。 如果我们把函数调用放到一个条件中,这就变得更加有趣了。

 <?php if (($foo1 = return_never())) { // Dead code var_dump($foo1); } if (($foo2 = return_sometimes())) { var_dump($foo2); } 

正如你所看到的, @return void有它的用例,如果适用的话,应该使用它。

另外请注意,这将是即将到来的PHP PSR-5标准的一部分。 [1]

[1] http://www.php-fig.org/psr/

这是我如何理解和使用PhpDocumentor注释:

 <?php /** * This method always returns string. * @return string */ public function useCase1() { return 'foo'; } /** * This method returns 2 data types so list them both using pipeline separator. * @return string|false */ public function useCase2() { if ($this->foo === 1) { return 'foo'; } return false; } /** * This method performs some operation and does not return anything so no return * annotation is needed. */ public function useCase3() { $this->doOperation(); $this->doAnotherOperation(); } /** * If condition passes method returns void. If condition does not pass it returns * nothing so I think that specifying the return annotation with void is in space. :) * @return void */ public function useCase4() { if ($this->foo === 1) { $this->doOperation(); return; } $this->doAnotherOperation(); } 

从php 7.1开始, void是一个有效的返回types, 可以在一个函数上执行。

我会一直把它添加到docblock。

写它的另一个好处是区分void方法和可能返回任何内容的方法,但是由于疏忽而没有对docblock的@return条目。