如何在 PHPDoc 中记录多个变量声明

How to document multiple variable declarations in PHPDoc

提问人:John 提问时间:9/29/2014 更新时间:11/16/2022 访问量:3714

问:

我使用简短的语法来定义类的成员变量,因此而不是

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;

我做错了什么?

php phpstorm phpdoc

评论

0赞 gandaliter 9/29/2014
如果 PHPDoc 支持记录简短的语法声明,我会感到惊讶。你不能直接把它们写出来吗?
1赞 John 9/29/2014
这就是我目前正在做的事情,但是当有很多成员变量时,它会变得混乱,我希望有一些替代语法。

答:

6赞 Ian Bytchek 10/1/2014 #1

不是你想听到的答案,而是你做不到的答案。 PHPDoc并不像你想要的那么聪明,尽管没有它,地球上的生活几乎是不可能的。

此外,当人们不再遵循 PSR 约定时,事情通常会开始变得混乱,例如为每个语句声明多个属性。所以,如果你不喜欢普遍接受的方式,就不要重新发明轮子——坚持下去,你很快就会克服这个问题;)

哎呀......

评论

0赞 John 10/5/2014
我不明白为什么每个语句声明多个属性被认为是不好的做法。它使代码更干净,更易于阅读,因为您可以对变量等进行分组。在像C++这样的语言中,你被迫这样做(单个“private:”标签下的私有var,等等)。无论如何,感谢您的回答:)
1赞 Ian Bytchek 10/5/2014
哈哈,这个题目比炸药还爆炸性。PSR是上帝派来的!它为一种非常宽容的语言增加了一个很好的结构水平。许多人不喜欢别人写代码的方式,但许多人会做出妥协,看到别人以和他们一样的方式写代码。这在某种程度上使每个人的生活更轻松。
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。