### Param `Param`为我们提供了丰富的参数校验规则。 ###### 基础配置 需要包含`type(类型)`和`desc(描述)`,描述使接口参数含义更清晰,同时生成文档时昨晚参数说明。 ```php $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类型\);并且支持`或`组合。 ```php $rules = [ // id可能为int或者string类型 'id' => ['int/string', 'desc' => '业务id'], // id可能为int或者string ]; ``` ###### 枚举支持 配置`enum`key支持枚举值 ```php $rules = [ 'value' => ['int', 'enum' => [1, 2, 3], 'desc' => '更新值'], 'field' => ['string', 'enum' => ['field1', 'field2'], 'desc' => '更新字段'], ]; ``` ###### 区间支持 `int`,`float`数值类型可以配置`range`支持区间限制 ```php $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`类似 ```php $rules = [ 'nick' => ['string', 'len' => '[4,11)', 'desc' => '昵称'], ]; ``` 正则支持 `string`类型配置`reg`支持正则校验。 ```php $rules = [ 'username' => ['string', 'reg' => '[^0-9A-Za-z]', 'desc' => '用户名'], ]; ``` ###### emptyable/nullable开关 `emptyable`设置为`true`的时候,参数允许空值(`string`类型的参数`&nick=`);`nullable`设置为`true`的时候,参数可以缺省,这时可以配合`default`设置默认值。 ```php $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'] ``` ###### 参数名通配符支持 同一类型不确定参数个数的时候,可以使用参数名的通配符进行配置 ```php $rules = [ 'num_*' => ['int', 'desc' => '号码'], ]; // input: &num_1=1&num_2=2&num_5=5 ... // output: ['num_1' => 1, 'num_2' => 2, 'num_3' => 3] ```