|
本帖最后由 kaleok 于 2020-8-10 19:59 编辑
protected $rules = [
'uname'=>'length:3,5|用户名长度必须在3-5之间'
];
call_user_func_array(array($this, $rulefunname), $ruleparms)
做了内置表单验证,规划了一个验证字符串长度的验证方法。但是由于以后可能会新增规则,或者开发者自定义规则方法。
这个规则方法的参数就是不确定的。
想到可以在截图这里配置方法名:参数,参数,参数
这样的话就会有个问题,这个'3,5'字符串应该当做两个参数的实参传入。。。。但是这个只是一个字符串。。普通激活方法的办**理解为是一个逗号分隔的字符串。。
虽然php7以上支持可变参数传入,但是不适合这种情况,这种是你创建的是固定2个参数的方法,要用可变参数,创建的方法必须是另外一种方式。。
后面在模型类中开发者自定义验证规则创建的方法肯定是普通方法。。。
所以我查了大量资料,百度就是个坑。。。国外在一个技术论坛查了大半天终于找到了解决办法。。
但是call_user_func_array又是只支持普通调用函数,或者对象调用静态方法。
在一个类的内部调用普通方法,也找了大半天,终于知道。基本上所有php内置函数callback参数,可以改成array($this,callback)的方式调用。这一点官方都没有解释清楚。。。。
我是在开发自己的框架内核。不是普通表单验证 |
|