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 条评论
登录 后参与评论

相关文章

来自专栏Python小屋

Python导入标准库和扩展库对象的几种方式

Python中的对象大概可以分为三类:内置对象、标准库对象和扩展库对象。其中内置对象是直接编译进解释器的可以直接使用,没有对应的Python源代码;标准库对象是...

4128
来自专栏编程

Ansible 2 Api 源码分析及实现

Ansible 2 API ansible 2 API发生了很大的变化。 通过对ansible 2.4.2 的源代码(Python 环境为2.7.5)进行分析来...

51810
来自专栏Python小屋

Python多线程编程中daemon属性的作用

在脚本运行过程中有一个主线程,若在主线程中创建了子线程,当主线程结束时根据子线程daemon属性值的不同可能会发生下面的两种情况之一: 如果某个子线程的daem...

3335
来自专栏mwangblog

Linux中的管道命令(一)

1614
来自专栏lgp20151222

idea报错:Error running $classname: Command line is too long. Shorten command line for $classname.

打印的变量太长了,超过了限制,这都会报错...我只想知道idea基于什么原理会报这个错...

5023
来自专栏Redis

Redis数据类型之hashes类型

2、hsetnx 设置hash field为指定值,如果key不存在,则先创建。如果field已经存在,返回0,nx是not exist的意思。

1030
来自专栏从流域到海域

《笨办法学Python》 第15课手记

《笨办法学Python》 第15课手记 本节课涉及i新内容,请仔细阅读本节内容,尤其是作者的说明和常见问题解答。 原代码如下: from sys import ...

1725
来自专栏十月梦想

Express框架之中间件(一)

如果我的的get、post回调函数中,没有next参数,那么就匹配上第一个路由,就不会往下匹配了。

782
来自专栏dizhiling专栏

一行命令实现cpu占用率100%

cat /proc/cpuinfo |grep "physical id" | wc -l 可以获得CPU的个数, 我们将其表示为N.

1021
来自专栏云霄雨霁

了解Jalangi2

1110

扫码关注云+社区