diff --git a/README.md b/README.md index ba64661..c753ad2 100644 --- a/README.md +++ b/README.md @@ -324,6 +324,30 @@ $v = Validation::make($_POST,[ }] ``` +- **方式4**定义一个闭包验证类进行验证,这种方法能提高验证方法的复用性 + +> 别忘了继承 `\Inhere\Validate\Validator\AbstractValidator`,和实现必须方法`validate` + +```php + +class AdemoValidator extends \Inhere\Validate\Validator\AbstractValidator +{ + + + public function validate($value, $data): bool + { + if ($value == 1) { + return true; + } + return false; + } + +} + + ['status', new AdemoValidator()] +``` + + ## 一个完整的规则示例 一个完整的规则示例, 包含了所有可添加的项。 diff --git a/src/Validator/AbstractValidator.php b/src/Validator/AbstractValidator.php new file mode 100644 index 0000000..e8bc05f --- /dev/null +++ b/src/Validator/AbstractValidator.php @@ -0,0 +1,18 @@ +validate($value, $data); + } + +} diff --git a/src/Validator/ValidatorInterface.php b/src/Validator/ValidatorInterface.php new file mode 100644 index 0000000..1d0dec8 --- /dev/null +++ b/src/Validator/ValidatorInterface.php @@ -0,0 +1,20 @@ + 'userId check failure by closure!' ], + ]; } + /** + * 测试自定义验证器 + */ + public function testValidator() + { + $rule=[ + [ + 'user', + new AdemoValidator(), + 'msg' => 'userId check failure by closure!' + ], + ]; + $data=[ + 'user'=>1 + ]; + $validation = Validation::makeAndValidate($data, $rule); + $this->assertTrue($validation->isOk()); + $validation = Validation::makeAndValidate(['user'=>2], $rule); + $this->assertTrue($validation->isFail()); + } + + public function testArrayValidate(): void { $data = [ diff --git a/test/Validator/AdemoValidatorTest.php b/test/Validator/AdemoValidatorTest.php new file mode 100644 index 0000000..b341a95 --- /dev/null +++ b/test/Validator/AdemoValidatorTest.php @@ -0,0 +1,21 @@ +