PHPStan генерирует неопределенный статический метод при использовании пользовательских правил в Respect / Validation - PullRequest
0 голосов
/ 15 декабря 2018

Я использую Respect / Validation class и у меня есть пользовательское правило 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 класса?

1 Ответ

0 голосов
/ 18 января 2019

столкнулся с той же проблемой.Я просто добавил пользовательские валидаторы в конфигурационный файл 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

Хотя мне кажется, что это более обходной путь.

...