PHP设计模式(6)迭代器模式-创新互联

迭代器(Iterator)模式,在一个很常见的过程上提供了一个抽象:位于对象图不明部分的一组对象(或标量)集合上的迭代。

成都创新互联专注于贵州企业网站建设,成都响应式网站建设公司,商城系统网站开发。贵州网站建设公司,为贵州等地区提供建站服务。全流程按需网站设计,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务

迭代有几种不同的具体执行方法:在数组属性,集合对象,数组,甚至一个查询结果集之上迭代。

在PHP官方手册中可以找到完整的SPL迭代器列表。得益于对PHP的强力支持,使用迭代器模式的大部分工作都包括在标准实现中,下面的代码示例就利用了标准Iterator的功能。

_content = $content; } //返回到迭代器的第一个元素 public function rewind() { $this->_index = 0; } //检查当前位置是否有效 public function valid() { return isset($this->_content[$this->_index]); } //返回当前元素 public function current() { return $this->_content[$this->_index]; } //返回当前元素的键 public function key() { return $this->_index; } //向前移动到下一个元素 public function next() { $this->_index++; } } //定义数组,生成类时使用 $arrString = array('jane','apple','orange','pear'); $testIterator = new testIterator($arrString); //开始迭代对象 foreach ( $testIterator as $key => $val ) { echo $key . '=>' . $val . '
'; }

运行可以看到如下结果:

0=>jane 1=>apple 2=>orange 3=>pear

如果有兴趣,可以在每一个函数里面开始处加上“var_dump(__METHOD__);”,这样就可以看到每个函数的调用顺序了,如下:

string(25) "testIterator::__construct" string(20) "testIterator::rewind" string(19) "testIterator::valid" string(21) "testIterator::current" string(17) "testIterator::key" 0=>jane string(18) "testIterator::next" string(19) "testIterator::valid" string(21) "testIterator::current" string(17) "testIterator::key" 1=>apple string(18) "testIterator::next" string(19) "testIterator::valid" string(21) "testIterator::current" string(17) "testIterator::key" 2=>orange string(18) "testIterator::next" string(19) "testIterator::valid" string(21) "testIterator::current" string(17) "testIterator::key" 3=>pear string(18) "testIterator::next" string(19) "testIterator::valid"

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站标题:PHP设计模式(6)迭代器模式-创新互联
标题URL:http://hbruida.cn/article/dhihhi.html