上一主题下一主题
关键字
主题 : 关于php $db->select()->from()->where();
级别: 北风技术菜鸟

UID: 470400
精华: 0
发帖: 400
威望: 1816 点
学点: 965 点
贡献: 0 点
好评: 0 点
学币: 0 个
注册时间: 2014-06-27
最后登录: 2015-04-29
楼主  发表于: 2015-02-25 23:06||

关于php $db->select()->from()->where();

一个对象,方法后调用方法 Na~_=3+a  
zRJ y3/>  
过程是怎么执行的,是先返回第一个方法select()的东西,再执行第二个方法from(),再执行后面的方法吗?
此帖悬赏结束
最佳答案: 2 学点
最佳答案获得者: dhx840828284
级别: 北风资深评论员


UID: 470398
精华: 0
发帖: 3024
威望: 3862 点
学点: 8642 点
贡献: 90 点
好评: 0 点
学币: 112 个
注册时间: 2014-06-27
最后登录: 2015-04-07
沙发(1楼)  发表于: 2015-02-25 23:07||

其实很简单啊,方法都是对一个对象属性****操作,最后都返回本身就可以用这种链式方法的说。一个简单的例子大概是这样的: Vm8_ !$F  
7Qztc?XK  
<?php )Zr0_b"V:e  
// http://3v4l.org/V3VuZ R =c  
class database { \Nn%*?f  
    public $sql = ""; (%IstR|u:  
    public function select( $str = "" ) { bL#TR;*]  
        $this->sql .= $str; <6@NgSFz'  
        return $this; zW&O>H  
    } {7szo`U2  
    public function from( $str = "" ) { p q5H{  
        $this->sql .= $str; g wiC ,  
        return $this; rca"q[,  
    } ;+Kewi;<  
    public function __toString() { 5DBd [u3  
        return $this->sql; WC&Ltw8  
    } e ^& 8x  
} ]OUOL/J  
*)SgdC/f  
$db = new database(); Y##P9^zH1  
echo $db->select("abc")->from("def");
最佳答案奖励: (+2) 学点
级别: 北风资深工程师

UID: 472685
精华: 0
发帖: 1930
威望: 1946 点
学点: 3280 点
贡献: 0 点
好评: 0 点
学币: 0 个
注册时间: 2014-07-10
最后登录: 2015-04-08
板凳(2楼)  发表于: 2015-02-25 23:07||

你应该说的是链式操作吧,题目里写的语句,只是单纯的构造查询语句而已,还要执行 $db->query() 才有结果集,类似这样 $db->query($db->select()->from()->where())。上面的构造语句里,每个方法里,都返回对象本身 return $this,所以又可以接着执行接在后面的方法。
热心助人奖励: (+1) 学点
级别: 北风资深工程师

UID: 472681
精华: 0
发帖: 1791
威望: 1815 点
学点: 2095 点
贡献: 0 点
好评: 0 点
学币: 0 个
注册时间: 2014-07-10
最后登录: 2015-04-07
地板(3楼)  发表于: 2015-02-25 23:07||

其实就是返回了当前操作的对象,$this,这样一来就可以实现链式操作了!