php连贯操作实现

我们在使用一些框架(如ThinkPHP)编码的时候,常用到这样的代码。

M(‘User‘)->where(array(‘id‘=>1))->field(‘name‘)->select();

这样不仅有利于编码,而且也能让人"心情愉悦"呢。好了,不多说了。让我们看看如何实现的吧?

<?php

//数据库操作基类[PS:主要功能连贯功能实现]

class Db{

//此属性定义要实现连贯操作的方法名

public $sql = array(

"field" => "",

"where" => "",

"order" => "",

"limit" => "",

"group" => "",

"having" => "",

);

/**

* 连贯操作时,调用field() where() order() limit() group() having()方法且组合成sql语句

* 此方法为PHP魔术方法,调用类中不存在的方法时就会自动调用此方法

* @param $methodName 调用不存在的方法时,接收这个方法名称的字符串

* @param $args 调用不存在的方法时,接收这个方法的参数,以数组形式接收

*/

function __call($methodName,$args){

//把要请求的方法名,统一转为小写

$methodName=strtolower($methodName);

//若请求方法名与成员属性数组$sql下标对应上;则将第二个参数,赋值给数组中"下标对应的元素"

if(isset($this->sql[$methodName])){

$this->sql[$methodName]=$args[0];

}else{

echo ‘调用类‘.get_class($this).‘中的‘.$methodName.‘()方法不存在‘;

}

//返回对象;从而可以继续调用本对象中的方法,形成连贯操作

return $this;

}

/**

* 用此方法拼接成一个select的sql语句;[PS:此方法终结了连贯操作,置于连贯操作的最后面]

*/

function select(){

//按照select语法拼接sql字符串[PS:可以在mysql命令行中执行"help select;"查看其语法构结]

$sql="SELECT {$this->sql[‘field‘]} FROM test {$this->sql[‘where‘]} {$this->sql[‘group‘]} {$this->sql[‘having‘]} {$this->sql[‘order‘]} {$this->sql[‘limit‘]}";

echo $sql;

}

}

$obj=new db();

$obj->field(‘name,sex,address‘)->where(‘where name="guoyu"‘)->limit(‘limit 1‘)->select();

//输出:SELECT name,sex,address FROM test where name=guoyulimit 1

时间: 2024-10-12 16:58:01

php连贯操作实现的相关文章

关于php如何连贯操作类方法(以数据库为例)

关于php如何连贯操作类方法(以数据库为例) 1.下面是我写好的关于mysqli操作数据库的一些常用方法,大神请掠过 1 <?php 2 3 class Db 4 { 5 static private $config = [ 6 'datahost' => '', // 主机名 7 'dataname' => '', // 数据库名 8 'username' => '', // 用户名 9 'password' => '', // 用户密码 10 'charset' =>

第 39 章 ThinkPHP--SQL 连贯操作

本节课,我们将学习 ThinkPHP 模型基础类提供的连贯操作,通过连贯操作可以有效的 提供数据存取的代码清晰度和开发效率,并且支持所有的 CURD 操作. 一.连贯入门 连贯操作使用起来非常简单,比如查找到 id 为 1,2,3,4 中按照创建时间的倒序的前两 位. //连贯操作入门 $user = M('User'); var_dump($user->where('id in (1,2,3,4)')->order('date DESC')->limit(2)->select()

连贯操作

连贯操作 案例:实现职员管理功能 ① 设计数据库 ② 创建UserController控制器 ③ 定义add方法 ④ 构建add.html模板到./Application/Admin/View/User,并更改链接地址 ⑤ 定义左侧导航链接 ⑥ 时间选择插件 1)导入js文件 2)在input文本框中添加onfocus事件 ⑦ 定义addOk方法实现接收与添加数据 首先创建一个UserModel.class.php模型 实例化模型,创建数据对象 ⑧ 实现index方法 1.连贯操作 where

一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句

如题: 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句不是一条关联查询语句. 例如: $list = $db->relation(true)->where($where)->order('blogid desc')->limit($Page->firstRow.','.$Page->listRows)->select(); $sql = $db->getLastSql(); 输出的sql语句为: SELE

TP访问数据库 和 连贯操作

<?php namespace Admin\Controller; use Think\Controller; class MainController extends Controller { public function showList() { echo "hello"; } public function test() { //数据访问 //造模型对象 $nation = D("Nation"); //查询 //$a = $nation->se

ThinkPHP教程_PHP框架之ThinkPHP(八)【CRUD与连贯操作】

一.CRUD ThinkPHP提供了灵活和方便的数据库操作方法,其中最基本的就是CRUD四个操作,只有掌握了最基本的CRUD操作,才能更好的运用更多实用的数据库操作方法 CRUD操作通常与连贯操作配合 1.创建操作 使用add()方法或addAll()方法 ·add()方法 可以直接传入要插入的数据,而且会在插入之前会过滤掉数据表中不存在的字段以及非法的数据类型(例如对象.数组等非标量数据).若当前表有主键自动增长并且插入记录成功的话,则返回所插入记录主键值 如果在执行add()操作之前已经创建

ThinkPHP框架模型连贯操作(八)

原文:ThinkPHP框架模型连贯操作(八) Thinkphp的连贯操作使用起来也是很灵活: *可能这里有的mysql函数没全部罗列出来,大家可以举一反三,形式雷同 一.常用连贯操作 1.where 帮助我们设置查询条件 2.order 对结果进行排序 $arr=$m->order('id desc')->select(); $arr=$m->order(array('id'=>'desc','sex'=>'asc'))->select(); 多个字段排序 //数组形式

PHP中的连贯操作

连贯操作有什么好处?就是多行操作可以在一行之内完成,要进行连贯操作的方法必须返回$this,也就是当前类的对象实例,然后就可以进行连贯操作了,具体的实现代码如下所示. 1 <?php 2 /** 3 * php的连贯操作功能 4 * @date 2016.3.31 5 */ 6 namespace advanced; 7 class Join { 8 //姓名 9 private $name; 10 11 //性别 12 private $sex; 13 14 //身高 15 private $

【转】PHP实现连贯操作

[第一种方案 __call] 我们在使用一些框架(如ThinkPHP)编码的时候,常用到这样的代码. M('User')->where(array('id'=>1))->field('name')->select(); 这样不仅有利于编码,而且也能让人"心情愉悦"呢.好了,不多说了.让我们看看如何实现的吧? <?php //数据库操作基类[PS:主要功能连贯功能实现] class Db{ //此属性定义要实现连贯操作的方法名 public $sql = a