PHP设计模式之迭代器模式


Posted in PHP onJune 17, 2016

在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素而又不暴露该对象的内部表示,这就是PHP迭代器模式的定义。

适用场景:
访问一个聚合对象的内容而无需暴露它的内部表示
支持对聚合对象的多种遍历
为遍历不同的聚合结构提供一个统一的接口

迭代器模式实例:

<?php
class ConcreteIterator implements Iterator{
 private $position = 0;
 private $arr;
 function __construct(array $arr){
 $this->arr = $arr;
 }

 function rewind(){
 $this->position = 0;
 }

 function current(){
 return $this->arr[$this->position];
 }

 function key(){
 return $this->position;
 }

 function next(){
 ++$this->position;
 }

 function valid(){
 return isset($this->arr[$this->position]);
 }
}

$arr = array('xiao hong','xiao ming','xiaohua');
$concreteIterator = new ConcreteIterator($arr);
foreach ($concreteIterator as $key => $value) {
 echo $key."=>".$value."\n";
}

以上就是本文的全部内容,希望对大家学习PHP设计模式有所帮助。

PHP 相关文章推荐
《PHP编程最快明白》第六讲:Mysql数据库操作
Nov 01 PHP
PHP程序员最常犯的11个MySQL错误小结
Nov 20 PHP
php对csv文件的读取,写入,输出下载操作详解
Aug 10 PHP
codeigniter集成ucenter1.6双向通信的解决办法
Jun 12 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
Nov 03 PHP
PHP中的替代语法介绍
Jan 09 PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 PHP
PHP实现简单实用的分页类代码
Apr 08 PHP
PHP进行批量任务处理不超时的解决方法
Jul 11 PHP
PHP常见加密函数用法示例【crypt与md5】
Jan 27 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
Oct 03 PHP
解决Laravel5.5下的toArray问题
Oct 15 PHP
浅析PHP中的i++与++i的区别及效率
Jun 15 #PHP
学习PHP session的传递方式
Jun 15 #PHP
php实现图片上传时添加文字和图片水印技巧
Apr 18 #PHP
PHP实现适用于文件内容操作的分页类
Jun 15 #PHP
PHP实现适用于自定义的验证码类
Jun 15 #PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
Jun 15 #PHP
使用JavaScript创建新样式表和新样式规则
Jun 14 #PHP
You might like
PHP 一个页面执行时间类代码
2010/03/05 PHP
php GUID生成函数和类
2014/03/10 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
2018/06/11 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
2019/10/08 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
禁止F5等快捷键的JS代码
2007/03/06 Javascript
Javascript 类与静态类的实现
2010/04/01 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
2013/11/25 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
Js调用Java方法并互相传参的简单实例
2016/08/11 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
使用Python对Excel进行读写操作
2017/03/30 Python
python 拼接文件路径的方法
2018/10/23 Python
python批量创建指定名称的文件夹
2019/03/21 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
django2笔记之路由path语法的实现
2019/07/17 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
欧洲、亚洲、非洲和拉丁美洲的度假套餐:Great Value Vacations
2019/03/30 全球购物
在购买印度民族服饰:Soch
2020/09/15 全球购物
外贸采购员求职的自我评价
2013/11/26 职场文书
党组织公开承诺书
2014/03/29 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
2015年教师党员公开承诺书
2015/01/22 职场文书
团员个人总结
2015/02/26 职场文书
小程序实现侧滑删除功能
2022/06/25 Javascript