Param
Param
为我们提供了丰富的参数校验规则。
基础配置
需要包含type(类型)
和desc(描述)
,描述使接口参数含义更清晰,同时生成文档时昨晚参数说明。
$rules = [
'id' => ['type' => 'int', 'desc' => '用户id'],
];
// 当type位于第一个参数时,可缩写为
$rules = [
'id' => ['int', 'desc' => '用户id'],
];
类型支持
type
支持int
,string
,array
,float
,ip
,intArr
(array类型,元素为int类型),strArr
(array类型,元素为string类型),ipArr
(array类型,元素为ip类型);并且支持或
组合。
$rules = [
// id可能为int或者string类型
'id' => ['int/string', 'desc' => '业务id'], // id可能为int或者string
];
枚举支持
配置enum
key支持枚举值
$rules = [
'value' => ['int', 'enum' => [1, 2, 3], 'desc' => '更新值'],
'field' => ['string', 'enum' => ['field1', 'field2'], 'desc' => '更新字段'],
];
区间支持
int
,float
数值类型可以配置range
支持区间限制
$rules = [
// 全闭合
'num' => ['int', 'range' => '[1,10]', 'desc' => '号码'],
// 半闭合
'weight' => ['float', 'range' => '(0,200.1]', 'desc' => '体重'],
// 不闭合
'height' => ['float', 'range' => '(50.5,250.1)', 'desc' => '身高'],
];
长度支持
string
类型配置len
支持长度限制,使用方法和range
类似
$rules = [
'nick' => ['string', 'len' => '[4,11)', 'desc' => '昵称'],
];
正则支持
string
类型配置reg
支持正则校验。
$rules = [
'username' => ['string', 'reg' => '[^0-9A-Za-z]', 'desc' => '用户名'],
];
emptyable/nullable开关
emptyable
设置为true
的时候,参数允许空值(string
类型的参数&nick=
);nullable
设置为true
的时候,参数可以缺省,这时可以配合default
设置默认值。
$rules = [
'nick' => ['string', 'desc' => '昵称'],
];
// input: &nick=
// outpuy: param error
$rules = [
'nick' => ['string', 'emptyable' => true, 'desc' => '昵称'],
];
// input: &nick=
// outpuy: ['nick' => '']
$rules = [
'nick' => ['string', 'nullable' => true, 'default' => 'solu', 'desc' => '昵称'],
];
// input: &nick= or 不传参
// outpuy: ['nick' => 'solu']
参数名通配符支持
同一类型不确定参数个数的时候,可以使用参数名的通配符进行配置
$rules = [
'num_*' => ['int', 'desc' => '号码'],
];
// input: &num_1=1&num_2=2&num_5=5 ...
// output: ['num_1' => 1, 'num_2' => 2, 'num_3' => 3]