Я использую короткий синтаксис для определения переменных-членов класса, чтобы вместо
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 поддерживает составное объявление, хотя использует один докблок, а не много — http://phpdoc.org/docs/latest/references/phpdoc/tags/var.html
Обратите внимание, что если вы не получили ожидаемых результатов документа, это может быть ошибкой (как показано здесь — phpDoc @var для составного оператора не отображается правильно).
Если вы смотрите на похожие типы; например:
/** @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;
/**#@-*/