`
再逢山水
  • 浏览: 152606 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

PHP - Iterator接口的解释

    博客分类:
  • LAMP
php 
阅读更多
Iterator的接口定义如下:

    Iterator extends Traversable   
    {  
        abstract public mixed current ( void )  
        abstract public scalar key ( void )  
        abstract public void next ( void )  
        abstract public void rewind ( void )  
        abstract public boolean valid ( void )  
    }  


下面是一个简单的例子演示Iterator的使用方法:

    <?php  
    class myIterator implements Iterator {  
        private $position = 0;  
        private $array = array(  
            "firstelement",  
            "secondelement",  
            "lastelement",  
        );    
      
        public function __construct() {  
            $this->position = 0;  
        }  
      
        function rewind() {  
            var_dump(__METHOD__);  
            $this->position = 0;  
        }  
      
        function current() {  
            var_dump(__METHOD__);  
            return $this->array[$this->position];  
        }  
      
        function key() {  
            var_dump(__METHOD__);  
            return $this->position;  
        }  
      
        function next() {  
            var_dump(__METHOD__);  
            ++$this->position;  
        }  
      
        function valid() {  
            var_dump(__METHOD__);  
            return isset($this->array[$this->position]);  
        }  
    }  
      
    $it = new myIterator;  
      
    foreach($it as $key => $value) {  
        var_dump($key, $value);  
        echo "<br />";  
    }  
    ?>   


上面的例子会产生如下的输出:

string(18) "myIterator::rewind"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(0)
string(12) "firstelement"

string(16) "myIterator::next"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(1)
string(13) "secondelement"

string(16) "myIterator::next"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(2)
string(11) "lastelement"

string(16) "myIterator::next"
string(17) "myIterator::valid"



原文地址:http://blog.csdn.net/amonest/article/details/6193221
分享到:
评论

相关推荐

    implementation-iterator:迭代 PSR-4 兼容目录以实现类接口

    该库为符合 PSR-4 的文件夹结构创建迭代器,并在其中搜索接口/类的所有实现/扩展。 抽象实现和类本身将被忽略。 用法 $ iterator = new \ Scheb \ ImplementationIterator ( "src/" , "Root\Namespace" , "Some\...

    PHP迭代器接口Iterator用法分析

    PHP Iterator接口的作用是允许对象以自己的方式迭代内部的数据,从而使它可以被循环访问,Iterator接口摘要如下: Iterator extends Traversable { //返回当前索引游标指向的元素 abstract public mixed current ...

    PHP预定义接口——Iterator用法示例

    主要介绍了PHP预定义接口——Iterator用法,结合实例形式分析了PHP Iterator(迭代器)接口相关原理、定义与使用方法,需要的朋友可以参考下

    PHP检测接口Traversable用法详解

    Traversable用于检测一个类是否可以使用 foreach 进行遍历,这是一个无法在 PHP 脚本中实现的内部引擎接口,实际编程中我们使用Iterator接口或者IteratorAggregate接口来实现遍历。 接口摘要: Traversable { } ...

    PHP聚合式迭代器接口IteratorAggregate用法分析

    本文实例讲述了PHP聚合式迭代器接口...实现getIterator方法时必须返回一个实现了Iterator接口的类的实例。 例子说明: &lt;?php /** * 利用聚合式迭代器,并返回一个实现了Iterator接口的类的实例 *

    PHP中预定义的6种接口介绍

    2.Iterator迭代器接口 接口摘要: Iterator extends Traversable { //返回当前索引游标指向的元素 abstract public mixed current(void) //返回当前索引游标指向的元素的键名 abstract public scalar key(vo

    豌豆框架0.6 - 支持分层敏捷开发的PHP框架

    迭代器, 扩展增强PHP的迭代器(Iterator)接口, 并融合进框架中的其它模块. 数据库, 对PEAR DB的重新封装, 支持同时连接多个数据库, 并提供通过标签直接查询. 分页类, 数据分页和分页导行分开, 可更好的扩展分页, 基于...

    PHP设计模式之迭代器(Iterator)模式入门与应用详解

    迭代器有时又称光标(cursor)是程式设计的软件设计模式,可在容器物件(container,例如list或vector)上遍访的接口,设计人员无需关心容器物件的内容,现在呢,各种语言实作Iterator的方式皆不尽同,有些面向对象...

    PHP设计模式之PHP迭代器模式讲解

    迭代器有时又称光标(cursor)是程式设计的软件设计模式,可在容器物件(container,例如list或vector)上遍访的接口,设计人员无需关心...PHP5开始支持了接口, 并且内置了Iterator接口, 所以如果你定义了一个类,并

    PHP7 新特性详细介绍

    PHP 的学习新特性 最近做的项目使用了 php7...通过添加 yield 关键字支持了 generators,Generators 提供了一个更简单的方法实现迭代器,不需要实现 Iterator 接口。 &lt;?php function xrange($start, $limit, $step

    简单的PHP集合库.zip

    类库(Class Library)是一个综合性的面向对象的可重用类型集合,这些类型包括:接口、抽象类和具体类。类库可以解决一系列常见编程任务(包括诸如字符串管理、数据收集、数据库连接以及文件访问等任务),还可以解决...

    PHP之预定义接口详解

    主要整理了PHP之预定义接口,在平时项目过程中比较常用的四个接口:IteratorAggregate(聚合式aggregate迭代器Iterator)、Countable、ArrayAccess、Iterator,需要的朋友可以参考下

    array-abstraction:实现 ArrayAccessIteratorCountable 接口的本机数组和对象的抽象

    实现 ArrayAccess/Iterator/Countable 接口的内置数组和对象的抽象。 这个库旨在抽象出 PHP 内置数组和不同接口对象之间的差异,可以实现以挂钩到数组语法。 PHP 有许多用于数组的内置函数,但它们只适用于内置...

    PHP5.5新特性之yield理解与用法实例分析

    yield生成器是php5.5之后出现的,yield提供了一种更容易的方法来实现简单的迭代对象,相比较定义类实现 Iterator 接口的方式,性能开销和复杂性大大降低。 yield生成器允许你 在 foreach 代码块中写代码来迭代一组...

    php使用yield对性能提升的测试实例分析

    生成器提供了一种更容易的方法来实现简单的对象迭代,相比较定义类实现 Iterator 接口的方式,性能开销和复杂性大大降低。生成器允许你在 foreach 代码块中写代码来迭代一组数据而不需要在内存中创建一个数组, 那会...

Global site tag (gtag.js) - Google Analytics