PHPStan 错误:方法应返回特定类型但返回混合

问题描述 投票:0回答:0

我在我的 PHP 8.4.2 项目中使用 PHPStan 进行静态分析,我遇到了一个返回多种类型或 null 的类方法的问题。这是我的带有类型提示和 PHPDoc 注释的方法:

   /**
    * Returns a value of the requirements array by its key
     * @return array<string, mixed>|string|int|float|null
     */
    public static function getRequirementsArrayImageByKey(string|int $key): string|int|float|array|null
    {
        return self::$requirementsArrayImage[$key] ?? null;
    }

该方法返回一个包含字符串键和混合值的数组、一个字符串、一个 int、一个 float 或 null。我相信我的类型提示和 PHPDoc 注释应该是正确的。

但是,PHPStan 给我以下错误:

[phpstan] 方法 Core\DataManager::getRequirementsArrayImageByKey() 应返回数组|float|int|string|null 但返回混合。

我尝试添加显式类型检查作为解决方法,但我对这个解决方案不满意,因为它给代码增加了不必要的复杂性。我正在寻找一个更清洁的解决方案来解决这个问题。

我错过了什么,或者我如何配置 PHPStan 以了解正确的返回类型而不在我的代码中添加额外的类型检查?

附录: $requirementsArrayImage 看起来像这样:

    /**
     * Provides basic requirements
     * @var array<string, array<string, string|int>|string|int|float>
     */
    private static array $requirementsArrayImage = [];

    public function __construct()
    {
        self::$requirementsArrayImage = [
            'allowed_ratio' => ['1', '4/3', '16/9'],
            'allowed_file_types_array' => ['jpeg', 'png'],
            'min_pixels' => 2000,
            'min_width_px' => 400,
            'min_height_px' => 200,
           ...
        ];
    }
...
php phpdoc phpstan
© www.soinside.com 2019 - 2024. All rights reserved.