Каков рекомендуемый метод документирования метода класса, который принимает переменное количество аргументов?
Может, что-то вроде этого?
<?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) { // ... }