PHPDoc: документирование функции с переменным числом аргументов

Каков рекомендуемый метод документирования метода класса, который принимает переменное количество аргументов?

Может, что-то вроде этого?

<?php class Foo { /** * Calculates the sum of all the arguments. * * @param mixed [$arg1, $arg2, ...] * * @return float the calculated sum */ public static function sum() { return array_sum(func_get_args()); } } 

Примечание. Как правило, я полагаю, что такого рода вещи следует избегать, когда это возможно. При этом было бы неплохо документировать оставшиеся несколько случаев, когда этого нельзя избежать.

 /** * @param mixed $numbers,... Description */ Public function sum ($numbers) 

В методе $ numbers не будут использоваться.

Если вы используете переменное количество аргументов, а также используя PHP >= 5.6 то вы можете использовать переменные функции (допускающие переменное количество аргументов), которые по-прежнему соответствуют уже описанному синтаксису PHPDoc ,... и PHPStorm будет правильно интерпретировать документы также. Использование вариационных функций исключает необходимость использования func_get_args() для захвата аргументов в массив.

 /** * @param mixed $args,... Explainatorium! */ function variadiculous(...$args) { // NOTE: $args === func_get_args() foreach ( $args as $arg ) { /* do work */ } } 

PHPStorm будет автоматически генерировать документы как @param array $args потому что технически, когда внутри функции variadiculous is_array($args) истинно. Я изменяю его, чтобы читать @param mixed $args,... как указано выше, и когда я использую горячую клавишу для отображения сигнатуры функции из другого места в моем коде, PHPStorm отображает variadiculous($args : ...array|mixed) – I рекомендуется использовать этот метод, если вы используете PHP> = 5.6

В случае синтаксиса ... PHPStorm 2017.1 использует:

 /** * @param Type[] ...$values One or more values. */ public function func(Type ...$values) { // ... }