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

hmtdttj4  于 2022-11-21  发布在  PHP
关注(0)|答案(3)|浏览(185)

我使用简短的语法来定义类的成员变量

  1. private $a;
  2. private $b;
  3. private $c;

我用

  1. private
  2. $a,
  3. $b,
  4. $c;

现在我使用PHPDoc告诉IDE每个成员的类型,如下所示:

  1. /** @var classA */
  2. private $a;
  3. /** @var classB */
  4. private $b;
  5. /** @var classC */
  6. private $c;

但是,这不适用于短语法:

  1. private
  2. /** @var classA */
  3. $a,
  4. /** @var classB */
  5. $b,
  6. /** @var classC */
  7. $c;

我做错了什么?

uqcuzwp8

uqcuzwp81#

这不是你想听到的答案,而是你做不到的。PHPDoc并不像你想的那样聪明,尽管没有它地球上的生命几乎不可能存在。
此外,当人们不再遵循PSR conventions时,事情通常会变得一团糟,比如每个语句声明多个属性。所以,如果你不喜欢普遍接受的方法,不要重新发明轮子--坚持下去,你很快就会克服这个问题;)
对不起...

dfuffjeb

dfuffjeb2#

实际上,phpDocumentor 2.x确实支持复合声明,尽管使用一个docblock而不是多个docblock--https://docs.phpdoc.org/3.0/guide/references/phpdoc/tags/var.html#var
请注意,如果没有得到预期的doc结果,可能是一个bug(如此处所示--phpDoc @var for compound statement isn't displayed correctly)。

btqmn9zl

btqmn9zl3#

如果你在寻找相似的类型;例如:

  1. /** @var string */
  2. private $stringVariable;
  3. /** @var string */
  4. private $stringVariable2;
  5. /** @var string */
  6. private $anotherVariable;
  7. /** @var string */
  8. private $andMoreStringTypes;

当然,您可以对每个规则使用/** @var string */-但也可以使用DocBlock模板,如下所示:

  1. /**#@+
  2. * @var string
  3. */
  4. private $stringVariable;
  5. private $stringVariable2;
  6. private $anotherVariable;
  7. private $andMoreStringTypes;
  8. /**#@-*/
展开查看全部

相关问题