php链式操作的实现

一、什么是链式操作?

直接说链式操作,也许大家不清楚是什么,但是在平时使用框架的过程中,大家肯定见到过这样子的使用:

$db->where()->limit()->order();

这种链式操作写法的好处就是可以用一行代码来实现你要的功能。

二、如何实现?

在不使用链式操作时,假如现在需要去操作数据库,我们建立了一个Database类,代码如下:

<?php

class Database
{
	function where($where)
	{
		//条件
	}

	function order($order)
	{
		//排序
	}

	function limit($limit)
	{
                //限制
	}
}

接着实现我们要的查询:

$db = new Database();
$db->where("id=1");
$db->where("age=18");
$db->order("id desc");
$db->limit(5);

这种情况下,我们需要写4行代码去进行一个数据库的查询。

那么,我们使用链式操作后呢,就能避免这种情况出现。

链式操作的关键点就在于,在方法的末尾加上一句:return $this.

<?php

class Database
{
	function where($where)
	{
		return $this;
	}

	function order($order)
	{
		return $this;
	}

	function limit($limit)
	{
		return $this;
	}
}

接着再来实现我们要的查询:

$db = new Database();
$db->where("id=1")->where("age=18")->order("id desc")->limit(5);

这样我们就仅使用了一行代码来实现原本四行代码的功能了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏自动化测试实战

《selenium2 python 自动化测试实战》(9)——切换窗口

4155
来自专栏技术小讲堂

使用Unity创建依赖注入依赖注入生命周期:注册、解析、销毁   注册解析销毁

这篇文章翻译自《Dependency Injection With Unity》第三章。文中提到的类似“前几节”的内容您不必在意,相信您可以看懂的。 P.S:如...

3456
来自专栏编程

Python模块知识7:XML

XML是实现不同语言或程序之间进行数据交换的协议; 通常浏览器返回的字符串有三种格式: 1、HTML 2、Json 3、XML 其中,XML可以在页面上做展示,...

1837
来自专栏数据和云

MySQL的前缀索引及Oracle的类似实现

MySQL有一个很有意思的索引类型,叫做前缀索引,它可以给某个文本字段的前面部分单独做索引,从而降低索引的大小。 其实,Oracle也有类似的实现,对于文本,它...

3505
来自专栏C/C++基础

Protocol Buffers C++入门教程

protobuf(Protocol Buffers )是Google的开源项目,是Google的中立于语言、平台,可扩展的用于序列化结构化数据的解决方案。官网见...

1571
来自专栏逸鹏说道

01.Web大前端时代之:HTML5+CSS3入门系列~初识HTML5

Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 文档申明 <!-...

2784
来自专栏张戈的专栏

Linux:awk命令详解

? 简单使用: awk :对于文件中一行行的独处来执行操作 。 awk -F :'{print $1,$4}'   :使用‘:’来分割这一行,把这一行的第一...

3787
来自专栏黒之染开发日记

nodejs学习笔记

1、module.exports+require很好用,可以用来做全局变量,比如在a.js中require了一个js,并且修改了这个js的一个属性,然后b.js...

623
来自专栏扎心了老铁

python使用上下文管理器实现sqlite3事务机制

如题,本文记录如何使用python上下文管理器的方式管理sqlite3的句柄创建和释放以及事务机制。 1、python上下文管理(with) python上下文...

37912
来自专栏小狼的世界

VIM的使用技巧

  光标移到起始行,输入ma 光标移到结束行,输入mb 光标移到粘贴行,输入mc 然后 :'a,'b co 'c

582

扫码关注云+社区