全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 458|回复: 5

[疑问] php开发callback参数经验

[复制链接]
发表于 2020-8-10 19:55:28 | 显示全部楼层 |阅读模式
本帖最后由 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)的方式调用。这一点官方都没有解释清楚。。。。

我是在开发自己的框架内核。不是普通表单验证
发表于 2020-8-10 20:23:50 来自手机 | 显示全部楼层
这个是 callable 的一种写法
发表于 2020-8-10 19:57:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2020-8-10 19:57:57 | 显示全部楼层
就我用string分割文本,生成数组然后匹配规则吗。。。
 楼主| 发表于 2020-8-10 20:43:55 | 显示全部楼层
mean 发表于 2020-8-10 20:23
这个是 callable 的一种写法

是的,还是有人注意这些细节的
发表于 2020-8-11 00:27:10 来自手机 | 显示全部楼层
什么 还有人在用xp年代的方法?!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-3-28 17:26 , Processed in 0.072754 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表