PHPDoc 可选参数

Posted

技术标签:

【中文标题】PHPDoc 可选参数【英文标题】:PHPDoc optional parameter 【发布时间】:2012-11-06 15:20:06 【问题描述】:

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

【问题讨论】:

【参考方案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

【讨论】:

好吧,比我差。我认为 PHPDocumentor 已经内置了这个功能,并且认为我做错了什么。如果不接受您的回答,将保持开放一段时间,以防有人很快出现一些新信息。谢谢 支持添加到最新版本的 PHPDocumentor。见github.com/siad007/template.clean/commit/… 可以用新的注释更新吗?这里给出的链接都没有明显的答案。

以上是关于PHPDoc 可选参数的主要内容,如果未能解决你的问题,请参考以下文章

C#中可选参数和具名参数的使用

Dart 知识点:可选参数必需参数

面试突击13:方法优先调用可选参数还是固定参数?

是否有必要在将可选参数传递给另一个可选参数之前检查它?

命名参数和可选参数,以及 WCF

Java 可选参数