文档章节

php设计模式之迭代器模式

别人说我名字很长
 别人说我名字很长
发布于 2016/02/13 10:58
字数 267
阅读 20
收藏 0
<?php

namespace Tools;

/*
迭代器模式
迭代器模式,在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素
相比于传统的编程模式,迭代器模式可以影藏遍历元素的所需的操作
*/


class AllUser implements \Iterator{
	/*
	 * iterator接口中有5个方法,实现了iterator的类都可以foreach
	current()—返回当前元素值,
	key()—返回当前元素的键值,
	next()—下移一个元素,
	valid()—判定是否还有后续元素, 如果有, 返回true,
	rewind()—移到首元素.
	*/
	private $users = array();
	protected $index;

	public function __construct()
	{
		$db = mysqli_connect("localhost","root","","test");
		$res = $db->query("select * from user");
		$this->users = $res->fetch_all(MYSQLI_ASSOC);
	}

	//current()—返回当前元素值,
	public function current()
	{
		return $this->users[$this->index];
	}

	//key()—返回当前元素的键值,
	public function key()
	{
		return $this->index;
	}

	//next()—下移一个元素,
	public function next()
	{
		$this->index++;
	}

	//valid()—判定是否还有后续元素, 如果有, 返回true,
	public function valid()
	{
		return $this->index < count($this->users);
	}

	//rewind()—移到首元素.
	public function rewind()
	{
		$this->index = 0;
	}

}

$users = new \Tools\AllUser();
foreach($users as $user){
	print_r($user);
}



© 著作权归作者所有

共有 人打赏支持
别人说我名字很长
粉丝 56
博文 258
码字总数 108335
作品 0
济南
程序员
私信 提问
《PHP设计模式大全》系列分享专栏

《PHP设计模式大全》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201739.html 文章 php设计模式介绍之编程惯用法第1/3页 php设计模式介绍之值对象模式第1/5页...

kaixin_code
2018/11/06
0
0
设计模式 2014-12-19

book: 阎宏《JAVA与模式》 架构设计栏目 http://blog.csdn.net/enterprise/column.html 概要: http://bbs.csdn.net/forums/Embeddeddriver 23种设计模式分别是: 1.单例模式 2.工厂方法模式...

jayronwang
2014/12/19
0
0
PHP设计模式(一):简介及创建型模式

我们分三篇文章来总结一下设计模式在PHP中的应用,这是第一篇创建型模式。 一、设计模式简介 首先我们来认识一下什么是设计模式: 设计模式是一套被反复使用、容易被他人理解的、可靠的代码设...

juhenj
2014/05/15
228
2
【设计模式笔记】(十六)- 代理模式

一、简述 代理模式(Proxy Pattern),为其他对象提供一个代理,并由代理对象控制原有对象的引用;也称为委托模式。 其实代理模式无论是在日常开发还是设计模式中,基本随处可见,中介者模式中...

MrTrying
2018/06/24
0
0
JavaScript 中常见设计模式整理

开发中,我们或多或少地接触了设计模式,但是很多时候不知道自己使用了哪种设计模式或者说该使用何种设计模式。本文意在梳理常见设计模式的特点,从而对它们有比较清晰的认知。 JavaScript 中...

牧云云
2018/05/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linuxprobe16
39分钟前
4
0
OSChina 周日乱弹 —— 没时间 没头发 但有钱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @开源中国总经办主任 :分享齐一的单曲《这个年纪》 《这个年纪》- 齐一 手机党少年们想听歌,请使劲儿戳(这里) @肿肿卷 :我真的可以睡一天...

小小编辑
今天
51
4
Django进阶 1.1 ORM基础—ORM 1.2.1 增删改查之查询 1.2.2 删改增 (1) 1.2.3 删改增 (2)

ORM基础 ORM是Django操作数据库的API,Django的作者将sql语句封装在里面供我们使用。 我们前面还提到过Django提供一个模拟数据库的工具,sqlite,供我们学习测试使用。 如果我们想使用mysql...

隐匿的蚂蚁
今天
3
0
Windows 上安装 Scala

在安装 Scala 之前需要先安装 Java 环境,具体安装的详细方法就不在这里描述了。 您可以自行搜索我们网站中的内容获得其他网站的帮助来获得如何安装 Java 环境的方法。 接下来,我们可以从 ...

honeymose
今天
3
0
数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部