Yii2 + phpstan?

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

我有一个项目(PHP 8.2.6、Yii2、PHPStan)。运行 phpstan 命令后,我得到了一个错误列表,需要修复这些错误才能成功检查。错误示例:

  1. 访问未定义的属性
    yii\base\Application::$request
  2. 访问未定义的属性
    yii\base\Application::$response

这个错误是因为使用这样的代码引起的:

Yii::$app->request->post()
Yii::$app->response

第一个解决方案是在代码中的任何地方添加

/** @phpstan-ignore-next-line */
,例如,将使用 Yii::$app->response->。

问题,还有其他正确的方法可以消除此类错误吗?

我的 PHPStan 配置:

parameters:
    level: 2
    bootstrapFiles:
        - vendor/yiisoft/yii2/Yii.php
    excludePaths:
        - 'runtime/*'
        - 'vendor/*'
        - 'tests/*'
    stubFiles:
        - stubs/ActiveRecord.stub
        - stubs/Yii.stub
        - stubs/YiiRbac.stub
        - stubs/YiiBase.stub
        - stubs/YiiWeb.stub
        - stubs/YiiConsole.stub
    universalObjectCratesClasses:
        - stdClass
yii2 phpstan
2个回答
1
投票

在调试此类问题时,应该验证

Yii::$app
是什么类型。您可以对类型进行故障排除

\PHPStan\dumpType(Yii::$app);

是你所期望的实际类型吗

yii\base\Application
?如果是,是什么让您相信
yii\base\Application::$request
财产存在?它可能没有在类上以本机方式声明。这是通过
__get
定义的神奇属性吗?类上面是不是少了
@property
PHPDoc?

请参阅有关该主题的有用文章:https://phpstan.org/blog/solving-phpstan-access-to-undefined-property

如果您需要修复错误的第 3 方 PHPDocs,您可以编写存根文件:https://phpstan.org/user-guide/stub-files


0
投票

我正在为 PHPStan 开发一个扩展,它可以解决这些问题。

https://github.com/erickskrauch/phpstan-yii2

© www.soinside.com 2019 - 2024. All rights reserved.