参数过滤

#Param注解用于对请求参数的过滤,分别支持参数传递如下:

<?php
name:参数名称
method:注解启用类型,支持GET或POST输入,只对HTTP请求有效,当输入该参数时,只有请求类型相符该注解才会生效,默认为空直接生效
type:参数类型,多个支持使用|分隔
value:为空是对参数的预设值
empty:是否不为空,默认false,传入true既开启判断
min:最小长度
max:最大长度
chinese:判断长度是否使用mb_strlen,默认false,传入true既使用
tips:当过滤不通过时,输出的提示内容,不传入则使用系统编译提示
regular:正则表达式
callback:当过滤不通过时,系统调用的回调处理类,或函数。不填时,默认使用系统生命周期处理:\lifecycle\annotate_param->run();

注意:
1、PHP中对参数是弱类型处理,例如POST(int)1,PHP中接收到的参数即为:(string)1,所以在type中需要小心使用int类型判断,否则很容易造成is_int函数不通过。
2、callback支持自定义处理类,直接传入类的命名空间地址即可,系统会默认调用该类的run()方法,也可以输入函数名称。具体的参数接收,跟处理过程,可以参考\lifecycle\annotate_param->run()类。

一个完整的参数过滤注解大概如下:

<?php
/**
 * @RequestMapping(route="param", method="get", title="测试param注解")
 * @Param(name="id", method="POST", type="int|string", value="1", empty="true", min="10", max="20", chinese="true", callback="\lifecycle\annotate_param")
*/
public function param() {
    return $this->fetch(null);
}

可以解释为:
HTTP请求类型为POST请求时该注解生效,或者WebSocket请求时生效,
param参数id,不允许为空
不存在或为null时,默认为1
只允许intstring类型
最小长度10
最大长度20
不使用mb_strlen获取字节长度
以上参数不通过时,使用\lifecycle\annotate_param类处理回调。