文档章节

php设计模式之迭代器模式

别人说我名字很长
 别人说我名字很长
发布于 2016/02/13 10:58
字数 267
阅读 19
收藏 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);
}



© 著作权归作者所有

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

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

kaixin_code
11/06
0
0
JavaScript 中常见设计模式整理

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

牧云云
05/18
0
0
JavaScript设计模式入坑

JavaScript设计模式入坑 介绍 设计模式编写易于维护的代码。 设计模式的开创者是一位土木工程师。Σ( ° △ °|||)︴,写代码就是盖房子。 模式 模式一种可以复用的解决方案。解决软件设计中...

小小小8021
10/18
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
java设计模式-- 单例模式

在很久之前,也就是在大二暑假的时候,那时候看马士兵的视频教程中有提到很多的设计模式。 java的设计模式大致可以分为3大类,23种设计模式。 其中,创建型模式有5种:单例模式、建造者模式、...

爱学习的逃课君
2014/11/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mariadb二进制包安装,Apache安装

安装mariadb 下载二进制包并解压 [root@test-a src]# wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.t......

野雪球
今天
3
0
ConcurrentHashMap 高并发性的实现机制

ConcurrentHashMap 的结构分析 为了更好的理解 ConcurrentHashMap 高并发的具体实现,让我们先探索它的结构模型。 ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。HashEnt...

TonyStarkSir
今天
3
0
大数据教程(7.4)HDFS的java客户端API(流处理方式)

博主上一篇博客分享了namenode和datanode的工作原理,本章节将继前面的HDFS的java客户端简单API后深度讲述HDFS流处理API。 场景:博主前面的文章介绍过HDFS上存的大文件会成不同的块存储在不...

em_aaron
昨天
4
0
聊聊storm的window trigger

序 本文主要研究一下storm的window trigger WindowTridentProcessor.prepare storm-core-1.2.2-sources.jar!/org/apache/storm/trident/windowing/WindowTridentProcessor.java public v......

go4it
昨天
7
0
CentOS 生产环境配置

初始配置 对于一般配置来说,不需要安装 epel-release 仓库,本文主要在于希望跟随 RHEL 的配置流程,紧跟红帽公司对于服务器的配置说明。 # yum update 安装 centos-release-scl # yum ins...

clin003
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部