在项目中使用 PHP RedBean 时,PHPStan 会报告如下问题:
87 Access to an undefined property RedBeanPHP\OODBBean::$token.
这是因为 RedBean 的 OODBBean 类使用魔术方法将类属性与数据库表列进行逻辑绑定。AFAIK,RedBean 实现该功能的方式没有任何问题。
有没有办法将 PHPStan 配置为忽略 RedBean(或任何其他类)的问题?或者忽略魔法方法可能导致的问题?
根据您的确切需要,您有多种选择。对于魔法属性:
stdClass
,您可以将类名放入universalObjectCratesClasses
配置参数中。请参阅自述文件。@property
如果您的类始终包含相同的魔法属性,您可以通过在类上方添加注释来定义它们。__get
和__set
方法逻辑。这是定义在每种情况下对象上将存在哪些确切属性的可靠方法。通过避免误报,这使得 PHPStan 非常强大——它仍然会报告访问的属性,即使是用一种神奇的方式也没有定义。有关更多详细信息,请参阅自述文件。对于魔术方法,同样适用 3. 中的内容 - 您可以__call
为静态分析器编写一个描述逻辑的扩展。有关更多详细信息,请参阅自述文件。