Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHPDoc中记录多个变量声明_Php_Phpstorm_Phpdoc - Fatal编程技术网

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

如何在PHPDoc中记录多个变量声明,php,phpstorm,phpdoc,Php,Phpstorm,Phpdoc,我使用简短的语法来定义类的成员变量,而不是 private $a; private $b; private $c; 我用 现在我使用PHPDoc告诉IDE每个成员的类型,如下所示: /** @var classA */ private $a; /** @var classB */ private $b; /** @var classC */ private $c; 但是,这不适用于短语法: private /** @var classA */ $a, /** @var

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

private $a;
private $b;
private $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并不像你想的那么聪明,尽管没有它地球上的生命几乎是不可能的

此外,当人们不再跟随时,事情通常会变得一团糟,比如。因此,如果你不喜欢普遍接受的方法,不要重新发明轮子——坚持下去,你很快就会克服的;)


实际上,phpdocumentor2.x确实支持复合声明,尽管使用一个docblock而不是多个--


请注意,如果您没有得到预期的文档结果,则可能是一个bug(如此处所示--)。

如果您正在查看类似的类型;例如:

/**@var字符串*/
私有变量;
/**@var字符串*/
私人2美元;
/**@var字符串*/
另一个变量为私人美元;
/**@var字符串*/
私有$andmorestringtype;
当然,您可以对每个规则使用
/**@var string*/
,但也可以使用DocBlock模板,如下所示:

/**#@+
*@var字符串
*/
私有变量;
私人2美元;
另一个变量为私人美元;
私有$andmorestringtype;
/**#@-*/

如果PHPDoc支持记录简短的语法声明,我会感到惊讶。你不能直接把它们写出来吗?这就是我目前正在做的事情,但是当有很多成员变量时,它变得很混乱,我希望有一些替代语法。我不明白为什么每个语句声明多个属性被认为是不好的做法。它使代码更干净,更容易阅读,因为您在VC++等语言中使用C++语言强制执行这样的操作(单个VAR在单个“私有”标签下)。无论如何,谢谢你的回答:)哈哈,这个话题比炸药更具爆炸性。PSR是上帝派来的!它为一种非常宽容的语言增加了一个很好的结构层次。许多人不喜欢其他人编写代码的方式,但许多人会做出妥协,看到其他人以与他们相同的方式编写代码。这使得每个人的生活在某一点上变得更轻松。除了PSR-2之外,我找不到任何关于这种语法的官方文档,如果你有,你可以链接到这里,那就太好了:)@AlexanderSchranz这里还有一个参考:-但看起来这已经被弃用了。然而,它在大多数IDE中仍然有效。
private
    /** @var classA */
    $a,
    /** @var classB */
    $b,
    /** @var classC */
    $c;