如何配置PHPStan以避免特定类和/或魔术方法引起的误报?

如何配置PHPStan以避免特定类和/或魔术方法引起的误报?,php,redbean,phpstan,Php,Redbean,Phpstan,在项目中使用PHP RedBean时,PHPStan会报告如下问题: 87 Access to an undefined property RedBeanPHP\OODBBean::$token. 之所以会发生这种情况,是因为RedBean的OODBBean类使用神奇的方法将类属性与数据库表列逻辑绑定。顺便说一句,RedBean实现该功能的方式没有什么问题 有没有办法配置PHPStan来忽略来自RedBean(或任何其他类)的问题?或者忽略魔法方法可能导致的后果?根据您的具体需要,您有

在项目中使用PHP RedBean时,PHPStan会报告如下问题:

87     Access to an undefined property RedBeanPHP\OODBBean::$token.
之所以会发生这种情况,是因为RedBean的OODBBean类使用神奇的方法将类属性与数据库表列逻辑绑定。顺便说一句,RedBean实现该功能的方式没有什么问题


有没有办法配置PHPStan来忽略来自RedBean(或任何其他类)的问题?或者忽略魔法方法可能导致的后果?

根据您的具体需要,您有多种选择。对于魔法属性:

  • 如果类可以动态包含任何属性,类似于
    stdClass
    ,则可以将类名放入
    universalObjectCratesClasses
    config参数中。看
  • 如果您的类始终包含相同的魔法属性,则可以通过在类上方添加
    @property
    注释来定义它们
  • 您可以创建一个所谓的类反射扩展,它描述了静态分析器的
    \uuu获取的
    \uu设置的
    方法逻辑。这是一种健壮的方法,可以定义在任何情况下对象上都存在哪些确切属性。这使得PHPStan非常强大,因为它避免了误报——它仍然会报告访问的属性,即使这些属性没有以神奇的方式定义。有关更多详细信息,请参阅

  • 对于神奇的方法,同样的事情在3。应用-您可以编写一个扩展来描述静态分析器的
    \u call
    中的逻辑。有关更多详细信息,请参阅。

    UniversityObjectCratesClass正是我想要的。