可选参数

2022-08-30 13:59:36

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

因此,我认为我的代码没有问题,但我在文档中得到的只是:“__construct(字符串$encoding)”,该参数在任何地方都没有符号是可选的。


答案 1

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


答案 2

推荐