php mysql连贯操作_PHP 框架中数据库连贯操作的实现方式

任何一个PHP框架在操作数据库时都可以使用连贯操作。

如TP3.2框架中:

4fe4f833f481affa31c46bfe9f915393.png

再比如Laravel5中:

06d7349825ba742da79e976bdac612cd.png

本篇文章用一个简单的例子,说明框架中如何去实现连贯查询操作。当然,因为是较简单的例子,跟框架中实现方式大不相同,在此希望能起到抛砖引玉的作用。

代码示例

class Model

{

/**

* 数组用于存放拼接sql的条件

*/

private $options = [

'table' => '',

'fields' => '',

'where' => '',

'order' => ''

];

//$model->table('t1')

public function table($table)

{

$this->options['table'] = $table;

return $this;

}

//$model->table('t1')->fields('a,b,c')

public function fields($fields)

{

$this->options['fields'] = $fields;

return $this;

}

//$model->table('t1')->fields('a,b,c')->where('id=1')

public function where($where)

{

$this->options['where'] = 'WHERE ' . $where;

return $this;

}

//$model->table('t1')->fields('a,b,c')->where('id=1')->order('id desc')

public function order($order)

{

$this->options['order'] = 'ORDER BY ' . $order;

return $this;

}

//$model->table('t1')->fields('a,b,c')->where('id=1')->order('id desc')->select()

public function select()

{

$sql = "SELECT %FIELD% FROM %TABLE% %WHERE% %ORDER% ";

$sql = str_replace(

['%FIELD%' , '%TABLE%' ,'%WHERE%' ,'%ORDER%' ],

[

$this->options['fields'],

$this->options['table'],

$this->options['where'],

$this->options['order']

]

,$sql

);

return $sql;

/**

* 正常逻辑是执行sql语句 本次演示代码直接返回sql语句

*/

}

}

/**

* 调用

*/

$model = new Model();

$sql = $model ->table('t1')

->fields('a,b,c')

->where('id = 1')

->order('id desc')

->select();

var_dump($sql);

//SELECT a,b,c FROM t1 WHERE id = 1 ORDER BY id desc

关键

1.每次调用 table() fields() 或者 where()方法是,都会 return $this 使得方法能够连贯被执行下去。

2.总体原理就是记录每个方法用户传入的参数,最终将sql进行替换拼接处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值