没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
PHP设计模式之迭代器(设计模式之迭代器(Iterator)模式入门与应用详解)模式入门与应用详解
主要介绍了PHP设计模式之迭代器(Iterator)模式,结合实例形式详细分析了PHP迭代器模式的相关概念、原
理、应用案例及操作注意事项,需要的朋友可以参考下
本文实例讲述了PHP设计模式之迭代器(Iterator)模式。分享给大家供大家参考,具体如下:
迭代器有时又称光标(cursor)是程式设计的软件设计模式,可在容器物件(container,例如list或vector)上遍访的接口,设
计人员无需关心容器物件的内容,现在呢,各种语言实作Iterator的方式皆不尽同,有些面向对象语言像Java, C#, Python,
Delphi都已将Iterator的特性内建语言当中,完美的跟语言整合,我们称之隐式迭代器(implicit iterator),但像是C++语言本
身就没有Iterator的特色,但STL仍利用template实作了功能强大的iterator。
但是,PHP5开始支持了接口, 并且内置了Iterator接口, 所以如果你定义了一个类,并实现了Iterator接口,那么你的这个类
对象就是ZEND_ITER_OBJECT,否则就是ZEND_ITER_PLAIN_OBJECT。对于ZEND_ITER_PLAIN_OBJECT的类,foreach
会通过HASH_OF获取该对象的默认属性数组,然后对该数组进行foreach,而对于ZEND_ITER_OBJECT的类对象,则会通
过调用对象实现的Iterator接口相关函数来进行foreach。
咱们什么也别说,先来看下迭代器的定义,那就是提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部
显示。它可帮助构造特定的对象,那些对象能够提供单一标准接口循环或迭代任何类型的可计数数据。来看下迭代器模式的结
构图:
咋样,反正我现在是一头雾水。。。
再来看下迭代器需要用到的内部方法:
Iterator::current — Return the current element 返回当前元素
Iterator::key — Return the key of the current element 返回当前元素的键
Iterator::next — Move forward to next element 移向下一个元素
Iterator::rewind — Rewind the Iterator to the first element 重新回到第一个元素
Iterator::valid — Checks if current position is valid 检查当前位置的有效性
咱不废话哈,直接来看下网上比较经典的一个实例:
class MyIterator implements Iterator
{
private $var = array();
public function __construct($array)
{
if (is_array($array)) {
$this->var = $array;
}
}
public function rewind() {
echo "倒回第一个元素";
reset($this->var);
}
public function current() {
$var = current($this->var);
echo "当前元素: $var";
return $var;
}
public function key() {
$var = key($this->var);
echo "当前元素的键: $var";
return $var;
}
public function next() {
$var = next($this->var);
echo "移向下一个元素: $var";
return $var;
}
public function valid() {
$var = $this->current() !== false;
echo "检查有效性: {$var}";
return $var;
}
}
资源评论
weixin_38646634
- 粉丝: 4
- 资源: 911
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功