当前位置:主页 > 技术方案 >

ThinkPHPFramework的SQL操作链接编写原理的

发布时间:2021-06-10 09:41   浏览次数:次   作者:admin
绪论。
人人都有过几次面试不难发现,尽管国产TP一直受到诟病。但却丝毫不能影响其在广大企业的发展受到青睐,强大的社区,暴力而详细的中文手册。其中一处相信大家并不陌生,就是他的链式写法,链式写法在一定程度上简化了SQL工作量。如何实现OK,那我们就从面向对象入手,分析链式写法的实现原理。技术解决方案,
例如以下陈述。
$User->limit(10)->where('status=1')->选择();
众所周知,面向对象方法可以返回多种数据类型,当然也可以返回对象本身,因此我们可以利用该方法来实现。
(c)cst{private$var=";publicfuncaFunc(){$this->var="Varischange";return$this;}}$obj="tunc";var_dump($obj);var_dump($obj->Func()));
结果打印出来了。
(b)obja(Ta)[1]private'var'=>lenga=0)obja(Ta)[1]private'var'=>lenga=13
很容易发现:我们的私有变量已经改变。这就是说,我们obj->Func(),执行完之后,将返回对象$var="Varischange"。
$User->利米特(10)->韦赫尔(1)->塞莱克特();
所以这句话不难理解。当一个方法被执行之后,对象被传递到下一个方法。
简易Selhi()实现。
classUserModel{private$field="*";private$tableName="";private$where="";private$limit=";functionfield($field$field{$field=""){$tur="{$tur="$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$tur="/$/$/$/$/tur="/$/$/$/$/tur="/$/$/$/$/$/$/$/tur="/$/$/$/$/$/$///$/tur="/$//$//$/////$/>>>{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////>。
概述。
思想可能是将SQL语句的各个条件赋值,通过链式运算的方式,然后再进一步统一处理SQL语句。本文只是简单的实现下原理,有意者可对方法的参数进行多种类型的判断,更灵活的赋条件。例如,where方法可以传递阵列。之后还可以按照这个思路,比如INSERT()、UPDATE()、DELETE()等。此处只是一种抛砖引玉,若要更深入的分析,还可以查看TP源码。
上面是ThinkPHPFramework的SQL操作链接编写原理的细节(浅显易懂)。