PHPDoc可选参数

wz8daaqr  于 2023-08-02  发布在  PHP
关注(0)|答案(2)|浏览(140)

在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)”,参数可选的任何地方都没有符号。

deyfvvtc

deyfvvtc1#

严格地说,PHP不知道“可选参数”,而是具有默认值的参数,当函数或方法被调用时可以省略这些参数。最后是一个可选参数,但是

@param string $encoding Encoding.

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

@param string $encoding (optional) Encoding.


我同意你的观点,像这样的符号

__construct([$encoding])


或者是

__construct($encoding = 'UTF-8')


会很好你可以发布一个bug报告
https://github.com/phpDocumentor/phpDocumentor2/issues?state=open
更新:意识到,这已经提到了https://github.com/phpDocumentor/phpDocumentor2/search?q=optional&type=Issues

jtoj6r0c

jtoj6r0c2#

如果您正在搜索@method -请设置默认值:

@method static where(array|string $array, $string = '', $string1 = '')

字符串

相关问题