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 新建文件夹与复制文件夹内所有内容

在指定路径下新建一个文件夹: import os def newfile(path): path=path.strip() path=path....

1786
来自专栏闵开慧

mapreduce主程序如何传递变量到map或者reduce函数中使用

    一般我们写的mapreduce主程序放在客户端机器上,执行任务时是在集群机器上,所以要将变量从主程序传递到我们自己写的map或者reduce函数中就不能...

3975
来自专栏Java工程师日常干货

【随笔】JVM核心:JVM运行和类加载

本篇博客将写一点关于JVM的东西,涉及JVM运行时数据区、类加载的过程、类加载器、ClassLoader、双亲委派机制、自定义类加载器等,这些都是博主自己的一点...

653
来自专栏云霄雨霁

了解Jalangi2

1060
来自专栏向治洪

volatile和synchronized的区别和联系

volatile 它所修饰的变量不保留拷贝,直接访问主内存中的。    在Java内存模型中,有main memory,每个线程也有自己的memory (例如寄...

1948
来自专栏编程

Ansible 2 Api 源码分析及实现

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

48910
来自专栏Hongten

php开发_多关键字,高亮显示

================================================================

831
来自专栏dizhiling专栏

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

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

891
来自专栏Python小屋

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

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

3295
来自专栏CaiRui

Python之简单的用户登录和注册

#!/bin/bash/env python # -*- coding:utf-8 -*- def login(username,password): ...

20210

扫码关注云+社区