33

SO上已经有2个类似的问题,但似乎没有一个答案有效。

PHPDoc 似乎没有将我的函数中的可选参数识别为可选参数,例如:

/**
 * Opens the connection and sets encoding
 * 
 * @param string $encoding Encoding.
 */
public function __construct($encoding='UTF-8') 
{
    $this->connect_mysqli();
    $this->set_encoding_mysqli($encoding);
}

它不应该将 $encoding 识别为可选的还是我在这里遗漏了什么?我真的很想用谷歌搜索并阅读文档,但我发现的只是:

如果您没有在实际代码中指示参数是可选的(通过“$paramname = 'a default value'”),那么您应该在参数的描述中提及该参数是可选的。

所以我认为我的代码没有问题,但我在文档中得到的只是:“__construct(string $encoding)”,没有任何标志,该参数是可选的。

4

1 回答 1

43

严格来说,PHP 不知道“可选参数”,而是有默认值的参数,在调用函数或方法时可以省略。好的,最后是一个可选参数,但是你的

@param string $encoding Encoding.

这里是完全正确的,因为默认值是一个字符串。文档试图告诉您的是您应该自己提及它

@param string $encoding (optional) Encoding.

我同意你的看法,像这样的符号

__construct([$encoding])

或者

__construct($encoding = 'UTF-8')

会好的。您可以发布错误报告

https://github.com/phpDocumentor/phpDocumentor2/issues?state=open

更新:意识到这已经提到了https://github.com/phpDocumentor/phpDocumentor2/search?q=optional&type=Issues

于 2012-11-18T15:12:43.453 回答