文档章节

php链式操作的实现

NateHuang
 NateHuang
发布于 2017/04/02 16:09
字数 317
阅读 37
收藏 4
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);

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

© 著作权归作者所有

NateHuang
粉丝 19
博文 66
码字总数 31120
作品 0
深圳
后端工程师
私信 提问
JesusSlim/pinject

pinject Inject in PHP ! PHP依赖注入实现. usage English [Chinese] Install pinject in packagist:https://packagist.org/packages/jesusslim/pinject Install: composer require jesussl......

JesusSlim
2016/08/16
0
0
YurunHttp —— 基于 PHP cURL 的开源 HTTP 类库

一个基于 PHP cURL 的开源 HTTP 类库,支持链式操作,省去繁杂的 cURL 使用方法。支持 https、代理设置、Cookie、链式操作等。

王练
2017/04/25
27
0
Zebra-PHP-ArrayGroupBy

为什么使用Zebra-PHP-ArrayGroupBy 在如下场景中,我们总是希望能够在php中使用类似mysql的groupby操作: SQL过于复杂,造成数据库运算效率低下 从数据库中读取出原始数据,在php中进行运算,...

呼延平
2015/01/29
878
0
mongo分页设计和实现

一、思路 通过链式操作和有序集合实现。 二、分页关键实现摘抄 操作枚举 支持链式操作的QueryProperty类设计,对象里面放置容器对象,从而实现链式操作,mongoTemplate的源码中有很多类似的设...

漂泊者及其影子
2016/06/28
597
0
开源 PHP HTTP 类库--YurunHttp

YurunHttp 简介 一个基于PHP cURL的开源HTTP类库,支持链式操作,省去繁杂的cURL使用方法。 支持https、代理设置、Cookie、链式操作等。 Composer 本项目可以使用composer安装,遵循psr-4自动...

宇润
2017/04/24
2.6K
7

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部