gpt4 book ai didi

在 Respect/Validation 中使用自定义规则时,PHPStan 抛出未定义的静态方法

转载 作者:行者123 更新时间:2023-12-04 15:51:17 30 4
gpt4 key购买 nike

我正在使用 Respect/Validation类,我有自定义规则 CustomRule() 可以正常工作:

use Respect\Validation\Validator as v;

// ...

'email' => v::CustomRule()->email()->setName('email');

但这会导致 PHPStan 抛出错误:

调用未定义的静态方法 Respect\Validation\Validator::CustomRule()。

但是如果我在内置规则(例如 email())之后移动它,PHPStan 工作正常,没有错误:

'email' => v::email()->CustomRule()->setName('email');

明确地说,两个代码都有效,但 PHPStan 认为第一个代码无效。

有什么变通方法可以让 PHPStan 接受它,即使首先设置了 CustomRule()

更新:

我发现如果我编辑 Respect\Validation\Validator 类的文档 block 并将我的自定义规则附加到它的内置规则列表中,它就会起作用!

/**
* ...
* @method static Validator CustomRule()
*/
class Validator extends AllOf
...

当然,直接从主类修改文档 block 是个坏主意。也就是说,我的问题仍然是一样的。或者,PHPStan 是否有办法从我的 CustomRule 类中尊重我自己的文档 block ?

最佳答案

遇到了同样的问题。我所做的只是将自定义验证器添加到 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

我想更多的是解决方法。

关于在 Respect/Validation 中使用自定义规则时,PHPStan 抛出未定义的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53795771/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com