@Param()注解,主要用于对客户端请求参数的过滤,和默认值预设。
该注解比较复杂,共支持13个参数设置。
场景:对客户端请求参数的过滤,和默认值预设。
支持:HTTP、WebSocket、Rpc(2.5.2起)、Mqtt(2.5.2+)
注解:@Param()
参数:
name=""
method=""
GET或POST传入不限制HTTP请求有效。type=""
|符号分隔不限制int类型,在PHP中收到的会是string类型。value=""
v2.5.19版本后改为isset为false时预设,会根据允许的请求类型进行数据判断。)empty=""
false允许为空,true不能为空falsechinese=""
min=""、max=""参数时,是否使用mb_strlen()函数做为长度依据。false否,true是falsemin=""
chinese=""参数为准max=""
chinese=""参数为准regular=""
tips=""
callback=""
\box\lifecycle\annotate_param->run();validate=""
Validate验证器的规则。(2.5.6起)alias=""
Validate验证器不通过时,错误抛出的字段名对应中文别名。(2.5.6起)一个完整的参数过滤注解大概如下:
<?php
namespace app\http;
use x\controller\Http;
class Index extends Http
{
/**
* @RequestMapping(route="/test", method="GET", title="我是测试路由")
* @Param(name="id", method="POST", type="int|string", value="1", empty="true", min="10", max="20", chinese="true", callback="\box\lifecycle\annotate_param")
* @Param(name="name", value="sw-x")
*/
public function param() {
return $this->fetch('测试@Param()注解');
}
}
上面最长的那条@Param()注解,可以解释为:
POST请求时该注解生效,或者WebSocket请求时生效id,不允许为空null时,默认为1int或string类型mb_strlen获取字节长度1020\box\lifecycle\annotate_param类处理回调
实际开发中,对某个字段的校验,往往是很多场景下复用的,如果使用regular=""等属性,就会造成后期代码难以管理;
v2.5.6版本后,@Param注解加入了验证器的支持,对于内置验器规则不满足的开发者,还可以自行封装规则,具体的验证器使用方法,可以参考验证器相关文档;
下面介绍@Param注解中,关于validate的使用方法:
<?php
namespace app\http;
use x\controller\Http;
class Index extends Http
{
/**
* @RequestMapping(route="/test", method="GET", title="我是测试路由")
* @Param(name="id", alias="注解", validate="require|int|min:10|max:100")
*/
public function param() {
return $this->fetch('测试 validate 的支持');
}
}
上面的@Param()注解,可以解释为:
id,不允许为空
SW-X