十五:验证类型的非注解使用
一: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 也可以直接使用非注解的验证
![]()
自定义验证器的时候:要先有类型注解 才能使用条件注解



浙公网安备 33010602011771号