`
再逢山水
  • 浏览: 156297 次
  • 性别: 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
分享到:
评论

相关推荐

    Laravel开发-multi-level-array-iterator

    要创建一个multi-level array iterator,首先需要实现PHP的`Iterator`接口。这个接口定义了迭代器必须具有的五个方法:`current()`、`key()`、`next()`、`rewind()`和`valid()`。通过这些方法,可以控制遍历数组的...

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

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

    PHP迭代器接口Iterator用法分析

    PHP中的Iterator接口提供了一种优雅的方式来处理集合的迭代问题,它允许开发者控制如何遍历集合,同时提供了一组标准化的方法来完成这一任务。通过实现这些方法,可以创建符合PHP迭代器模式的对象,它们能够在使用`...

    php-5.2.0-win32-installer.msi

    6. SPL(Standard PHP Library):这是一个内置的PHP库,包含多种数据结构和迭代器,如ArrayIterator、DirectoryIterator等,丰富了PHP的编程能力。 三、集成Web服务器 在Win32环境下,PHP可以与IIS或Apache等Web...

    PHP中的Iterator迭代对象属性详解

    通过这篇详细的介绍,读者应当能够理解PHP中Iterator接口的作用、如何实现该接口以及它与foreach循环之间的关系。掌握这些知识可以帮助开发者更好地控制数据的访问和遍历过程,并能够实现更复杂的迭代逻辑。对于希望...

    PHP SPL标准库之接口(Interface)详解

    它继承自Iterator接口,提供了一种方式来包裹其他迭代器,并在迭代过程中添加额外的行为。例如,下面的`MyOuterIterator`类在遍历元素时在其后附加"TEST": ```php class MyOuterIterator extends Iterator...

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

    在PHP中,`Iterator`预定义接口是用于创建自定义迭代器的关键工具,它允许对象像数组一样被遍历。迭代器接口提供了五种抽象方法,这些方法必须在实现该接口的类中定义,以便能够正确地迭代对象的属性或数据。下面将...

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

    - Iterator接口是用于创建自定义迭代器的,它允许对象被像数组一样遍历。这个接口继承自Traversable,包含以下五个抽象方法: - `current()`: 返回当前索引游标指向的元素。 - `key()`: 返回当前元素的键名。 - ...

    php-5.2.3.tar.gz

    7. **SPL(Standard PHP Library)**:标准PHP库的加入,为开发者提供了大量内置的数据结构和迭代器,如ArrayIterator、SplStack等,简化了复杂数据处理。 8. **其他改进**:还包括对XPath的支持、XMLWriter的改进...

    php-5.2.10.tar.gz

    - SPL(Standard PHP Library):这是PHP的标准扩展库,包含各种数据结构和迭代器,如ArrayIterator、DirectoryIterator等,5.2.10版进一步丰富了SPL的功能。 2. PHP与Discuz!的结合: Discuz!是一款基于PHP和...

    PHP检测接口Traversable用法详解

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

    php SPL IteratorAggregate_ArrayAccess_Countable_ArrayObject接口简单用法

    `Iterator.php` 文件可能包含了实现自定义迭代器的示例代码,这与本文的主题密切相关,因为`IteratorAggregate`接口就是用来定义自定义迭代器的。不过,具体的实现细节需要查看该文件才能了解。在实际开发中,这样的...

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

    在PHP中,Iterator接口定义了五个方法:valid(), key(), current(), next(), rewind(),这些方法允许访问对象内的元素。 3. SPL提供的迭代器类包括但不限于ArrayIterator、RecursiveIteratorIterator、...

    PHP设计模式之迭代器模式Iterator实例分析【对象行为型】

    2. 具体迭代器(ConcreteIterator):实现了Iterator接口,提供了具体的遍历实现,包括初始化、移动、检查是否到达结束等方法。 3. 抽象聚合类(Aggregate):定义了创建迭代器的接口,即提供一个方法用于获取迭代...

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

    // 实现Iterator接口的方法 public function rewind() { /* ... */ } public function current() { /* ... */ } public function key() { /* ... */ } public function next() { /* ... */ } public function ...

    PHP设计模式的使用-php_design_patterns.zip

    - 解释器模式(Interpreter):给定一个语言,定义它的文法表示,并提供一个解释器来处理该语言中的句子。 - 迭代器模式(Iterator):提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 观察者模式...

Global site tag (gtag.js) - Google Analytics