我使用简短的语法来定义类的成员变量,所以不是
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;
我做错了什么?
不是你想听到的答案,但你做不到。PHPDoc并没有你想要的那么聪明,尽管没有它地球上的生命几乎是不可能的。
此外,当人们停止遵循PSR约定时,事情通常会变得一团糟,比如每个语句声明多个属性。所以,如果你不喜欢普遍接受的方式,就不要重新发明轮子——坚持下去,你很快就会克服这个问题;)
Srsly…
实际上,phpDocumentor 2.x确实支持复合声明,尽管使用了一个文档块而不是多个--https://docs.phpdoc.org/3.0/guide/references/phpdoc/tags/var.html#var
请注意,如果您没有得到您期望的文档结果,那么它可能是一个错误(就像这里显示的那样——phpDoc@var for compound语句没有正确显示)。
如果您正在查看类似的类型;例如:
/** @var string */
private $stringVariable;
/** @var string */
private $stringVariable2;
/** @var string */
private $anotherVariable;
/** @var string */
private $andMoreStringTypes;
当然,您可以对每个规则使用/** @var string */
,但也可以使用DocBlock模板,如下所示:
/**#@+
* @var string
*/
private $stringVariable;
private $stringVariable2;
private $anotherVariable;
private $andMoreStringTypes;
/**#@-*/