十五:验证类型的非注解使用

一:Swoft版本升级

(1):查看版本

https://packagist.org/packages/swoft/swoft

(2):升级步骤待写......

 

二:非注解验证器

注解方式引用和使用验证器是有限制,只支持在 Http server/ Rpc server /Websocket server 等特定位置使用,在实际业务开发中,其它地方也会涉及参数的验证。

全局方法

function validate(array $data, string $validatorName, array $fields = [], array $userValidators = []): array

全局函数使用,当验证器失败会抛出 Swoft\Validator\Exception\ValidatorException 异常

  • $data 需要验证的数据,必须是数组 KV 格式
  • $validatorName 使用的验证器( @Validator() 注解标记的 )
  • $fields 需要验证的字段,为空验证器所有字段
  • $userValidators 同时使用的自定义验证器,支持两种格式。

示例: 所有参数验证

use Swoft\Validator\Annotation\Mapping\Validator;

$data = [
    'email' => 'swoft@xx'
]

$result = validate($data, Validator::class);

示例: 指定字段验证

use Swoft\Validator\Annotation\Mapping\Validator;

$data = [
    'email' => 'swoft@xx'
]

$result = validate($data, Validator::class, ['email']);

示例: 同时使用自定义验证器

use Swoft\Validator\Annotation\Mapping\Validator;

$data = [
  'start'  => 12,
    'end'    => 16,
];

$result = validate($data, Validator::class, [], ['testUserValidtor']);

示例: 同时使用自定义验证器且传递参数

use Swoft\Validator\Annotation\Mapping\Validator;

$data = [
    'start'  => 12,
    'end'    => 16,
    'params' => [1, 2]
];

$users = [
    'testUserValidtor' => [1, 2]
];

$result = validate($data, Validator::class, [], $users);
三:如果get和post方法写到一个控制器中的时候;使用注解的验证可能会相互受影响;
  可以分开写get和post 也可以直接使用非注解的验证

 

自定义验证器的时候:要先有类型注解 才能使用条件注解

 

 


 



posted @ 2019-11-18 17:28  痞子胥  阅读(160)  评论(0)    收藏  举报