验证器应该是我们在使用TP,Laravel这些框架的时候经常遇到的,英文名Validate,为什么要验证器呢?数据验证应该是所有web api的第一步,通过校验前端数据的是否合法,来进行数据的接下来的操作,如果数据不合法,直接退回给前端,而不用执行。
Laravel
1 | //验证数据的正确性 |
TP
1 | protected $rule = [ |
其实两个很类似,就是通过传入验证条件和接受到的参数,来进行对应规则的验证.
自己
1 | <?php |
controller调用
1 | $validate = ['comment_id'=>'required|test' ,'sex'=>'required']; |
需要注意的点是:
- 上面验证器的使用过程中并不是检测到错误就立刻返回,而是检测出所有的错误再返回,所以我定义了两个static用来存储数据,当标志位是false的时候再把存储的错误信息一起返回。
- is_callable函数的使用,验证函数是否能执行,如果是类中,[‘类名’, ‘方法名’], 都是字符串,注意这个类名用__CLASS__,之前我直接写的Validate,这样肯定是不行的,同理call_user_func_array这个也是,相比较于call_user_func,这个是后面传入函数中的参数要以array的形式,如果是非静态函数,就传入类名,静态的话要传入对象哦,$this,或者new一个对象吧。call_user_func_array is_callable
- 需要注意static的使用,用的self哦,一般的使用用的this(都是在类中),在类的外面的话,static 是 类名::,非static用的是 object->func.
- __call 是类中不存在这个方法的时候调用会自动执行,传入的两个参数第一个是调用的方法名,第二个参数是参数.