php - 在尊重/验证中使用自定义规则时,PHPStan 抛出未定义的静态方法
问题描述
我正在使用Respect/Validation类,并且我有自定义规则CustomRule()
可以正常工作:
use Respect\Validation\Validator as v;
// ...
'email' => v::CustomRule()->email()->setName('email');
但这会导致 PHPStan 抛出错误:
Call to an undefined static method Respect\Validation\Validator::CustomRule().
但是,如果我在内置规则(例如,email()
)之后移动它,PHPStan 工作正常,没有错误:
'email' => v::email()->CustomRule()->setName('email');
需要明确的是,这两个代码都有效,但 PHPStan 认为第一个代码是无效的。
任何解决方法以便 PHPStan 会接受它,即使CustomRule()
是先设置的?
更新:
我发现如果我编辑Respect\Validation\Validator
类的文档块并将我的自定义规则附加到其内置规则列表中,它就可以工作!
/**
* ...
* @method static Validator CustomRule()
*/
class Validator extends AllOf
...
当然,直接从主类修改 doc 块是个坏主意。也就是说,我的问题仍然是一样的。或者,也许 PHPStan 有办法从我的CustomRule
课堂上尊重我自己的文档块?
解决方案
遇到同样的问题。我所做的只是将自定义验证器添加到 phpstan 配置文件 (phpstan.neon)。它可以用正则表达式来完成,例如:
parameters:
ignoreErrors:
- '#Call to an undefined method Respect\\Validation\\Validator::[a-zA-Z0-9\\_]()#'
文档:https ://github.com/phpstan/phpstan#ignore-error-messages-with-regular-expressions
我想更多的解决方法。
推荐阅读
- java - SpringBoot重新打包失败如何解决?
- apache-kafka - kafka 流库是否依赖于底层的 kafka 代理?
- python - 如何使用 Asyncio 控制在任何给定时间有多少任务实例正在工作?
- reactjs - 在再次打开之前卸载或移除先前打开的组件
- python - 如何使用 python 从 S3 读取压缩的 CSV?
- c# - 使用 C# 在 Windows 服务中并行处理 Kafka 消息
- git - `git log -- file` 没有显示任何内容
- json - 如何将此 WordPress JSON 条目转换为 PHP 数组?
- angular - 如何在angular6中从外部应用程序根调用方法
- rdkit - 有没有办法显示 rdkit.Chem.rdmolops.GetAdjacencyMatrix 中的原子索引?