上一主题下一主题
关键字
主题 : 关于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();

一个对象,方法后调用方法 ZW;Ec+n_K  
pBAAwHD  
过程是怎么执行的,是先返回第一个方法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||

其实很简单啊,方法都是对一个对象属性****操作,最后都返回本身就可以用这种链式方法的说。一个简单的例子大概是这样的: OXI>`$we  
DB3qf>@?  
<?php *" + u^  
// http://3v4l.org/V3VuZ `#"xgOSP>  
class database { gUY~ l= c  
    public $sql = ""; nt8& Mf  
    public function select( $str = "" ) { i!EAs`$o`  
        $this->sql .= $str; v1z d[jqk  
        return $this; ^09-SUl^  
    } n j2=}6  
    public function from( $str = "" ) { v UhgM'  
        $this->sql .= $str; !RSJb  
        return $this; \3`r/,wY  
    } ><I{R|bC  
    public function __toString() { &O#,"u/q`  
        return $this->sql; -\n%K  
    } &%m%b5  
} ?[7KN8$  
MUSsanCA  
$db = new database(); qP]1}-  
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,这样一来就可以实现链式操作了!