PHPStan генерирует неопределенный статический метод при использовании пользовательских правил в Respect / Validation

я использую Уважение / 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
...

Конечно, плохая идея напрямую модифицировать блок документации из основного класса. Тем не менее, мой вопрос остается прежним. Или, может быть, есть способ для PHPStan почтить мой собственный блок документов от моего CustomRule учебный класс?

0

Решение

Столкнулся с той же проблемой. Я просто добавил пользовательские Validators в файл конфигурации phpstan (phpstan.neon).
Это можно сделать с помощью регулярных выражений, например:

parameters:
ignoreErrors:
- '#Call to an undefined method Respect\\Validation\\Validator::[a-zA-Z0-9\\_]()#'

Docs: https://github.com/phpstan/phpstan#ignore-error-messages-with-regular-expressions

Хотя это скорее обходной путь.

0

Другие решения

Других решений пока нет …