此处已有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)”,在该参数是可选的任何地方都没有任何符号。
答案 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