描述PHP DocBlock?-PHPSan中包含带有@phpstan-return的对象(stdClass)的数组

qni6mghb  于 2023-03-07  发布在  PHP
关注(0)|答案(1)|浏览(124)

我有一个PHP (8.2) 中的示例函数,它返回一个array,在这个array中还有一个object,更准确地说是stdClass
我使用PHPStan作为静态分析器工具。我如何在语法上正确地指定这个(对象形状)结构,以便使用PHPStan数组形状在@phpstan-return中使用它?

示例函数getBooks()

function getBook(): array
{
    $author = new stdClass();
    $author->firstName = 'John';
    $author->lastName = 'Doe';

    return [
        'id' => 12345,
        'title' => 'Whoever may help me deserves a big "Thank You!"',
        'authors' => $author,
    ];
}

我已经尝试过的是无效语法:

/**
 * @phpstan-return array{
 *     id: int,
 *     title: string,
 *     authors: object{
 *         firstName: string,
 *         lastName: string,
 *     },
 * }
 */

我肯定已经知道的是,这里的object { .. }部分在语法上是不正确的。

f45qwnt8

f45qwnt81#

可以使用array<keyType, valType|valType|...>模式定义关联数组体系结构:

/** @return array<string, int|stdClass|string> */
function getBook(): array
{ ... }
    • 一个

或指定它是混合数组:

/** @return array<mixed> */
function getBook(): array
{ ... }

相关问题