param.md 2.6 KB

Param

Param为我们提供了丰富的参数校验规则。

基础配置

需要包含type(类型)desc(描述),描述使接口参数含义更清晰,同时生成文档时昨晚参数说明。

$rules = [
    'id' => ['type' => 'int', 'desc' => '用户id'],
];
// 当type位于第一个参数时,可缩写为
$rules = [
    'id' => ['int', 'desc' => '用户id'],
];
类型支持

type支持intstringarrayfloatipintArr(array类型,元素为int类型),strArr(array类型,元素为string类型),ipArr(array类型,元素为ip类型);并且支持组合。

$rules = [
    // id可能为int或者string类型
    'id' => ['int/string', 'desc' => '业务id'], // id可能为int或者string
];
枚举支持

配置enumkey支持枚举值

$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]