PHP - Iterator接口的解释

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

你可能感兴趣的:(PHP)