PHPDoc可选参数

时间:2012-11-18 15:04:43

标签: php phpdoc param optional

此处已有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 ='默认值'”),那么你应该在参数的描述中提到参数是可选的。

所以我发现我的代码没有问题,但我在文档中得到的是: “__construct(string $ encoding)”,在该参数是可选的任何地方都没有任何符号。

1 个答案:

答案 0 :(得分:37)

严格地说,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