【发布时间】:2018-08-10 22:04:26
【问题描述】:
想象一下,我们有一个带有可选可空参数的方法(PHP 7.0),就像这个例子一样:
/**
* @param Type1 $foo
* @param Type2 $bar
*/
function myFunction(Type1 $foo, Type2 $bar = null)
{
}
不幸的是,从 PHPDoc 文档中不清楚,将第二个参数标记为可选和可为空的正确方法是什么。
通常我使用“Type2|null”表示法:
/**
* @param Type1 $foo
* @param Type2|null $bar
*/
function myFunction(Type1 $foo, Type2 $bar = null)
{
}
实际上这是我更喜欢的方式,因为它明确地描述了所有可能的类型。但是如果参数是否可选,我从文档中听到的抱怨并不明显。
我知道,接缝类似于非官方约定“(可选)”
/**
* @param Type1 $foo
* @param Type2 $bar (optional)
*/
function myFunction(Type1 $foo, Type2 $bar = null)
{
}
我不喜欢这种方法,因为从技术上讲,您可以显式提供 NULL 作为第二个参数。并且从 phpdoc 中并不清楚。
一般来说,我什至可以一起使用它们:
* @param Type2|null $bar (optional)
但它看起来不太好,恕我直言。
您能否提供一些反馈,或者更好的是,提供一些指向相应编码标准/样式指南的链接?
【问题讨论】:
-
如果你有一个类型(它打算成为一个类),你为什么要把它清空?使函数智能以在开始时进行检查,或者创建具有不同预期参数的附加函数。
-
这听起来更倾向于基于意见。
-
这与更改代码无关。可选参数通常有异味。这是关于 phpdoc 标准的。有些人对此有非常强烈的看法,这也让我感到惊讶。
标签: php phpdoc phpdocumentor2