如何记录[type]数组?

8 php arrays documentation types phpdoc

说我有这样的功能:

function theFunction() {
    $arr = array();
    for ($i=0;$i<10;$i++) {
        $arr[] = new theObject($i);
    }
    return $arr;
}
Run Code Online (Sandbox Code Playgroud)

我需要记录函数的返回类型.我当然可以使用array,但这并没有提供可以提供的所有信息,也没有告诉开发人员很多关于函数的真实性质.

如何在PHPDoc中记录"[type]"类型的类型?

Rob*_*ert 10

phpDocumentor的文档

Type表示的值可以是数组.必须按照以下选项之一的格式定义类型:

  1. 未指定,没有给出所表示数组的内容的定义.例:@return array

  2. 如果指定包含单个类型,则Type定义会通知读者每个数组元素的类型.然后只需要一个Type作为给定数组的元素.

    例: @return int[]

    请注意,mixed也是单一类型,使用此关键字可以指示每个数组元素包含任何可能的类型.

  3. 如果指定包含多个类型,则Type定义会通知读者每个数组元素的类型.每个元素可以是任何给定类型.例:@return (int|string)[]

    请注意,
    许多IDE可能还不支持此表示法.

  • 我不认为 int[]|string[] 的意思与 (int|string)[] 相同。第一个代表一个 int 元素数组或一个字符串元素数组。后者表示可以混合两种类型元素的数组。 (3认同)

Wil*_*ilt 8

在 PHPDoc 中,您可以对类型提示数组成员执行以下操作:

@var array<\My\Folder\ClassName>
Run Code Online (Sandbox Code Playgroud)

更新

您还可以显式声明关联数组的键,如下所示:

@var array<string, \My\Folder\ClassName>
Run Code Online (Sandbox Code Playgroud)

根据此处发布的答案,您甚至可以显式声明密钥,以防您想这样做:

/**
 * @return array[
 *  'controller' => string,
 *  'action' => string
 * ]
 */
Run Code Online (Sandbox Code Playgroud)

注意: 这已经过测试并且在 PHP Storm 中运行良好:

在此输入图像描述