1 | $result=$mysqlDb->limit(’0,10′)->order(‘id desc’)->findall(); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | /* *类功能:实现数据库的连贯查询操作 */ classmysql_query{ var$tbl=’user’;//要操作的表名 var$limit=”;//存储limit语句的变量 var$order=”;//存储order语句的变量 var$sql=”;//存储完整sql语句的变量 functionlimit($str) { $this->limit=’limit ‘.$str;//设置limit语句 //返回对类自身的引用,这里不能使用return new mysql_qery(), //因为这样相当于又创建了类的一个新实例,那么上一步设置的limit语句,在新实例中是不存在的 //大家可以自己实验 //因此要返回$this,即当前类的实例 return$this; } functionorder($str) { $this->order=’order by ‘.$str;//设置order语句 return$this;//返回对类自身的引用 } functionfindall() { $this->sql=’select * from ‘.$this->tbl.’ ‘.$this->order.’ ‘.$this->limit;//拼接sql语句 echo$this->sql;//输出,由于是示例,所以没有写查询数据库的代码 } } //Example $mysqlDb=newmysql_query(); $result=$mysqlDb->limit(’0,10′)->order(‘id desc’)->findall(); print_r($result); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | classTest { protected$options=array(); //这里就是了, 通过判断调用的函数名, 如果存在, 那么设置参数, 返回自己 publicfunction__call($func,$args) { if(in_array($func,array('form','field','join','order','where','limit','更多....'))) { $this->options[$func] =$args; return$this;//这里返回了本对象 } } } //Example $test=newTest(); $test->form('test');// 这样调用就相当于设置 $test->options['form'] = 'test'; |
1 2 3 4 5 6 | publicfunctionfind() { $sql="SELECT {$this->options['field']} FROM {$this->options['form']}"; $sql.= isset($this->options['where']) ?" WHERE {$this->options['where']}":''; //.........更多处理 echo$sql; } |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |