@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
不能为空false
chinese=""
min=""
、max=""
参数时,是否使用mb_strlen()
函数做为长度依据。false
否,true
是false
min=""
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
时,默认为1
int
或string
类型mb_strlen
获取字节长度10
20
\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
,不允许为空