PHPDoc:记录具有可变数量参数的函数

2022-08-30 13:58:25

记录接受可变数量参数的类方法的推荐方法是什么?

也许是这样的东西?

<?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());
    }
}

注意:作为一般规则,我认为应该尽可能避免这种事情。话虽如此,最好仍然记录无法避免的其余少数情况。


答案 1

如果您使用可变数量的参数并且也使用,那么您可以使用可变参数函数(允许可变数量的参数),它仍然符合已经提到的PHPDoc语法,PHPStorm也将正确解释文档。使用可变参数函数消除了将参数捕获到数组中的需要。PHP >= 5.6,...func_get_args()

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

PHPStorm会自动生成文档,因为从技术上讲,函数内部为真。我将其更改为如上所述,当我使用热键显示PHPStorm显示的代码中其他地方的函数签名时 - 如果您使用PHP>= 5.6,我建议使用此方法@param array $argsvariadiculousis_array($args)@param mixed $args,...variadiculous($args : ...array|mixed)


答案 2

... 语法的情况下,PHPStorm 2017.1 使用:

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

推荐