文档章节

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
码字总数 103692
作品 0
济南
程序员
JavaScript 中常见设计模式整理

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

牧云云
05/18
0
0
java设计模式-- 单例模式

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

爱学习的逃课君
2014/11/27
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
【设计模式笔记】(十六)- 代理模式

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

MrTrying
06/24
0
0
你需要了解的23种JavaScript设计模式

为什么要学习设计模式? 在许多访谈中,你可能会遇到很多面向对象编程中的接口,抽象类,代理和以及其他与设计模式相关的问题。 一旦了解了设计模式,它会让你轻松应对任何访谈,并可以在你的...

java高级架构牛人
06/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

GO 数组相关操作

package mainimport("fmt""math/rand""time")func main() {//数组的几种定义方式var arr1 [3]int = [3]int{1,2,3}var arr2 = [3]int{4,5,6}arr3 := [3]string{"h", "w", ......

汤汤圆圆
31分钟前
1
0
JAVA 中interrupt、interrupted和isInterrupted的区别

首先,我们说明下三个方法的功能 interrupt() 向当前调用者线程发出中断信号 isinterrupted() 查看当前中断信号是true还是false interrupted() 是静态方法,查看返回当前中断信号并将中断信号...

我爱春天的毛毛雨
35分钟前
1
0
Coding and Paper Letter(二十二)

资源整理。 1 Coding: 1.开源项目openeo api。oponEO开发了一个开放的API,以简单统一的方式将R,python和javascript客户端连接到对地观测大数据云平台的后台。 此存储库包含此API,即oponE...

胖胖雕
今天
1
0
RxJS的另外四种实现方式(三)——性能最高的库

接上篇 RxJS的另外四种实现方式(二)——代码最小的库(续) 代码最小的库rx4rx-lite虽然在性能测试中超过了callbag,但和most库较量的时候却落败了,于是我下载了most库,要解开most库性能...

一个灰
今天
5
0
马太效应

马太效应

yizhichao
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部