连贯操作

PHP中的__call()魔术方法2

一世执手 提交于 2019-12-09 14:20:15
相信大家在用ThinkPHP开源框架的时候,对Model类的连贯操作方法肯定很感兴趣吧,那今天我们就用PHP中的__call()魔术方法去实现对SQL语句select的查询的连贯操作。 代码: <? header("Content-type:text/html;charset=utf-8"); class testcall{ public $p; /*记录SQL关键字*/ /*select * from table where id=1 order by id limit 1,2*/ function __call($method_name,$arg){ if(in_array($method_name,array('field','table','where','order','limit'))){ $this->p[$method_name]=$arg[0]; } return $this; /*返回当前对象 testcall*/ } function select(){ $field=isset($this->p['field'])?$this->p['field']:'*'; $table=isset($this->p['table'])?$this->p['table']:'default'; $where=isset($this->p['where'])?' where

ThinkPHP 连贯操作详解

三世轮回 提交于 2019-12-09 14:17:52
ThinkPHP 连贯操作 连贯操作是 ThinkPHP 极富特色的一大特性,在使用连贯操作进行数据库操作时,就像玩游戏搭积木一样容易:嗯,程序编写就应该如此简洁而容易才对。 连贯操作的一个例子: $Dao = M("User"); // 查询所有用户数据 $allUser = $Dao->select(); // 查询最近注册的 10 个用户并按照注册时间排序 $newUser = $Dao->order('regdate DESC')->limit(10)->select(); 上面查询最近 10 个注册用户的例子中,select、order 和 limit 都是 Model 的内置方法,分别表示数据查询、设置排序和查询记录限制。当把这些及更多的方法组合放在一起的时候从而构建不同的数据库操作(包括 CURD 所有操作)时,这种操作方式就叫连贯操作。 连贯操作主方法 连贯操作主方法是指对数据库的操作方法,例如 select(查询)、find(查询一条记录)、getBy动态方法、add(写入)、save(更新)、delect(删除)等。注意:主方法这一称谓并非官方的称呼,而是本教材为了便于理解而定义的。 一个连贯操作中只允许出现一个主方法,且主方法必须要写在连贯操作的最后。本教程对各主方法分别做了详细介绍: 写入数据方法:add 查询数据方法:select find