提问人:John 提问时间:9/29/2014 更新时间:11/16/2022 访问量:3714
如何在 PHPDoc 中记录多个变量声明
How to document multiple variable declarations in PHPDoc
问:
我使用简短的语法来定义类的成员变量,因此而不是
private $a;
private $b;
private $c;
我使用
private
$a,
$b,
$c;
现在我使用 PHPDoc 告诉 IDE 每个成员的类型,如下所示:
/** @var classA */
private $a;
/** @var classB */
private $b;
/** @var classC */
private $c;
但是,这不适用于短语法:
private
/** @var classA */
$a,
/** @var classB */
$b,
/** @var classC */
$c;
我做错了什么?
答:
6赞
Ian Bytchek
10/1/2014
#1
不是你想听到的答案,而是你做不到的答案。 PHPDoc并不像你想要的那么聪明,尽管没有它,地球上的生活几乎是不可能的。
此外,当人们不再遵循 PSR 约定时,事情通常会开始变得混乱,例如为每个语句声明多个属性。所以,如果你不喜欢普遍接受的方式,就不要重新发明轮子——坚持下去,你很快就会克服这个问题;)
哎呀......
评论
0赞
John
10/5/2014
我不明白为什么每个语句声明多个属性被认为是不好的做法。它使代码更干净,更易于阅读,因为您可以对变量等进行分组。在像C++这样的语言中,你被迫这样做(单个“private:”标签下的私有var,等等)。无论如何,感谢您的回答:)
1赞
Ian Bytchek
10/5/2014
哈哈,这个题目比炸药还爆炸性。PSR是上帝派来的!它为一种非常宽容的语言增加了一个很好的结构水平。许多人不喜欢别人写代码的方式,但许多人会做出妥协,看到别人以和他们一样的方式写代码。这在某种程度上使每个人的生活更轻松。
1赞
MAChitgarha
9/27/2020
除了 PSR-2 之外,PSR-12(扩展编码样式)还规定每个语句不得声明多个属性。
5赞
ashnazg
10/16/2014
#2
实际上,phpDocumentor 2.x 确实支持复合声明,尽管使用了一个 docblock 而不是多个 docblock -- https://docs.phpdoc.org/3.0/guide/references/phpdoc/tags/var.html#var
请注意,如果您没有得到预期的文档结果,则可能是一个错误(例如此处显示的错误 - 复合语句的phpDoc@var未正确显示)。
评论
0赞
Robin Bastiaan
11/4/2022
请根据链接显示语法是如何完成的。不幸的是,该链接不再起作用,因此我找不到正确的语法。phpdoc.org
1赞
ashnazg
11/16/2022
@RobinBastiaan链接已更新
4赞
Rob
5/15/2018
#3
如果您正在寻找类似的类型;例如:
/** @var string */
private $stringVariable;
/** @var string */
private $stringVariable2;
/** @var string */
private $anotherVariable;
/** @var string */
private $andMoreStringTypes;
当然,您可以对每个规则使用,但您也可以使用 DocBlock 模板,如下所示:/** @var string */
/**#@+
* @var string
*/
private $stringVariable;
private $stringVariable2;
private $anotherVariable;
private $andMoreStringTypes;
/**#@-*/
评论
0赞
Alexander Schranz
6/19/2020
我找不到任何关于这种语法的官方文档,如果你有一个,你可以把它链接到这里,那将是很棒的:)
1赞
Rob
6/20/2020
@AlexanderSchranz 这里仍然有一个参考:manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/... - 但看起来这已被弃用。然而,它仍然适用于大多数 IDE。
评论