打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ThinkPhp框架研究之二 魔术函数

在看 TP框架的帮助文档的时候 看到一个很有意思的功能---字段的动态查询

 

官方是这么描述的 

 

 

 

第一感觉 是 getBy后面的内容是字段名字 于是乎 就翻开Model类源码去看了看

果不其然..发现了一个 魔术函数 __CALL;

__call 函数是 在用对象访问一个该类不存在的方法时调用的函数

系统会自动把方法名和 参数都传到 __call方法中

 

TP是这么定义的

 

 

仔细阅读代码

它提供了三种方式 如果都不符合直接报错提示

 

第一种

 

 

应该能看懂吧...

_call把捕获的方法及其参数传递进来

判断 $method是否在允许的数组中,如果存在 将参数赋给$this->option变量

然后返回 $this对象

这是什么意思?

 

 

 

按照 __call函数 第一种解释就是 

$Form->order('id desc') 执行之后

$this->option变量会变成

$this->option['order']='id desc',

然后 会返回$this对象 

变成

$this->option['limit']='6',

然后会执行SQL去搜索数据

 

第二种就是

  

这个的意思就是 

如果符合array('count','sum','min','max','avg'),true)

会将参数作为 sql语句的搜索字段 ,如果没有 默认就是 星

也就是 SELECT count(*)|sum(*)|min(*)|max(*)|avg(*) ********返回给数据

第三种就是咱们前面说的

 

 

这句代码会将 $User->getby* 中的*作为where 语句的参数来执行

 

假如说 代码为 

$User->getByUsername("siren");

那么 通过__call执行之后形成的语句就是

select * from table where username="siren"

 

就是这样..如果有错的地方 欢迎提出来..

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
第九章 过程
什么是Python函数?内容介绍!
508的睡眠唤醒
简单的C++解释器1.0
VBS教程:VBscript语句-Call 语句
VBScript中的Call语句
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服