2013-02-17 33 views
4

我試圖在我的課上實現OuterIterator接口,但我不確定在方法getInnerIterator中使用什麼。我知道它應該返回一個Iterator,但我不知道它應該在什麼情況下返回InnerIterator,儘管它已經具有Iterator接口的所有方法,那麼爲什麼它需要一個InnerIterator瞭解OuterIterator接口PHP

我完全有OuterIterator

class myouterIterator implements OuterIterator 
{ 
    /** 
    * Returns the inner Iterator for the current entry 
    */ 
    public $data = array(1,2,3,4,5,6,7,8,9,10); 
    public $position = 0; 
    public function getInnerIterator() 
    { 
     // What code should be place here 
    } 
    public function rewind() 
    { 
     $this->position = 0; 
    } 
    public function valid() 
    { 
     return isset($this->data[$this->position]); 
    } 
    public function key() 
    { 
     return $this->position; 
    } 
    public function current() 
    { 
     return $this->data[$this->position]; 
    } 
    public function next() 
    { 
     ++$this->position; 
    } 
} 

$OuterIt = new myouterIterator(); 
foreach($OuterIt as $key => $value) 
{ 
    echo $key, ' ', $value, '<br>'; 

} 

回答

3

你爲什麼要實現OuterIterator都失去了什麼?它的目的是「迭代迭代器」,但你的例子只是迭代標量值,對每一個迭代器都沒有意義。

如果您想查看OuterIterator接口的實際示例,請查看AppendIterator,該接口連續遍歷多個迭代器。