注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

php开发lamp

《西安--木木》-经历丰富了生活。 架构师QQ群: 246695517

 
 
 

日志

 
 

php框架--php框架的连贯查询  

2013-02-02 21:56:16|  分类: php基础 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


如果你是一名使用过多种框架的php程序员,你一定见过这样的查询语句:

$mysql->limit(’0,10′)->order(‘id desc’)->findall();

上面的查询语句,连续使用->操作符进行操作,并最终返回一个查询结果,那么这是如何实现的呢。

我们来简单分析一下:

->操作符用来访问对象,上面的语句一共使用了3次->操作符,而最后一次返回的是查询结果,这说明,前2次->访问后,返回的应该是一个对象,因为在php中,如果你对一个非对象使用->操作符是不可能的。这告诉我们,$mysql实例中的limit和order方法都返回一个对其所在类自身的引用即 return $this,了解了这一点,那么我们就可以实现连贯查询了。请看站长写的示例代码:

<?php

/*
        *类功能:实现数据库的连贯查询操作
        */
class mysql_query{
var $tbl=’user’;//要操作的表名
var $limit=”;//存储limit语句的变量
var $order=”;//存储order语句的变量
var $sql=”;//存储完整sql语句的变量

function limit($str){
$this->limit=’limit ‘.$str;//设置limit语句
//返回对类自身的引用,这里不能使用return new mysql_qery(),
//因为这样相当于又创建了类的一个新实例,那么上一步设置的limit语句,在新实例中是不存在的
//大家可以自己实验
//因此要返回$this,即当前类的实例
return $this;

}

function order($str){
$this->order=’order by ‘.$str;//设置order语句
return $this;//返回对类自身的引用
}

function findall(){
$this->sql=’select * from ‘.$this->tbl.’ ‘.$this->order.’ ‘.$this->limit;//拼接sql语句
echo $this->sql;//输出,由于是示例,所以没有写查询数据库的代码
}
}

$mysql=new mysql_query();
$mysql->limit(’0,10′)->order(‘id desc’)->findall();
?>

  评论这张
 
阅读(198)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017