介绍
这篇文章主要介绍了ThinkPHP框架SQL操作链式写法原理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
引言
大家如果有面试几次不难发现,虽然国产的TP一直被人诟病。但是丝毫不能影响它在广大企业中的开发受到青睐,强大的社区,暴力实用详细的中文手册。有一个地方相信大家都不陌生,就是他的链式写法,链式写法的一定程度上简化了SQL工作量对吧,是怎么实现的,那我们从面向对象入手,分析链式写法的实现原理。
如下语句
$ User→限制(10)→地方(& # 39;状态=1 & # 39;)→选择();
代码
我们知道,面向对象的方法,可以返回多种数据类型,当然,也可以返回<代码>对象自身> 代码,所以我们可以利用这个特性来实现
& lt; php ? 测试{class ,,,private var 美元;=,““ ,,,public function Func () { ,,,,,,,这个→美元var =,“var is change"; ,,,,,,,return 美元; ,,,} } ,,,obj 美元;=,new 测试(); ,,,var_dump ($ obj); ,,,var_dump (obj→美元Func ());
打印出来的结果:
对象(测试)[1] private 才能;& # 39;var # 39;,=祝辞,string & # 39; & # 39;,(长度=0) 对象(测试)[1] private 才能;& # 39;var # 39;,=祝辞,string & # 39; Var is 改变# 39;,(长度=13)
不难发现:我们私有变量$ var发生了改变。也就是说,我们obj→美元Func(),执行后,返回了一个带着<代码> $ var 代码>=<代码>“var change"> 代码的对象。
$ User→限制(10)→地方(& # 39;状态=1 & # 39;)→选择();
那么这个语句就不难理解了。 方法执行后,传递对象给下个方法,以此类推。
简单的选择()实现
& lt; php ? ,,,class UserModel { ,,,,,,,private field 美元;,,,,=?”, ,,,,,,,private tableName 美元;=?”; ,,,,,,,private where 美元;,,,,=?”; ,,,,,,,private order 美元;,,,,=?”; ,,,,,,,private limit 美元;,,,,=?”; ,,,,,,,function 字段(字段){ ,,,,,,,,,,,这个→美元field =,美元; ,,,,,,,,,,,return 美元; ,,,,,,,} ,,,,,,,function 表(表美元){ ,,,,,,,,,,,这个→美元table =,美元的表; ,,,,,,,,,,,return 美元; ,,,,,,,} ,,,,,,,function 顺序(顺序){ ,,,,,,,,,,,这个→美元order =,“order BY “美元订单; ,,,,,,,,,,,return 美元; ,,,,,,,} ,,,,,,,function (美元){ ,,,,,,,,,,,这个→美元where =,“where “在美元; ,,,,,,,,,,,return 美元; ,,,,,,,} ,,,,,,,function 限制(美元指数,limit 美元;=,0){ ,,,,,,,,,,,这个→美元limit =,“limit “。美元指数; ,,,,,,,,,,,如果(限制美元){ ,,,,,,,,,,,,,,,这个→美元限制。=,,,{$极限}“; ,,,,,,,,,,,} ,,,,,,,,,,,return 美元; ,,,,,,,} ,,,,,,,function 选择(){ ,,,,,,,,,,,如果(空($ this→表名)){ ,,,,,,,,,,,,,,,这个→美元tableName =, str_replace (“Model",,,,,, __CLASS__进行);//如果表名不指定,则获取类名 ,,,,,,,,,,,} ,,,,,,,,,,,selectSql 美元;=癝ELECT {$ this→领域}, null null null null null null null null null null null null null nullThinkPHP框架SQL操作链式写法原理的示例分析