百度词条的解释
http://baike.baidu.com/view/1413849.htm
<?php
//迭代器模式
//抽象聚集
interface IList {
function getIterator();
}
//抽象迭代器
interface IIterator {
function moveNext();
function currentItem();
function first();
function nexts();
}
//具体聚集
class ConcreteList implements IList {
private $list = array();
public function __construct() {
$this->list = array(1,2,3,4,5);
}
public function getIterator() {
return new ConcreteIterator($this);
}
public function length() {
return count($this->list);
}
public function getElement($index) {
return $this->list[$index];
}
}
//具体迭代器
class ConcreteIterator implements IIterator {
private $list;
private $index;
public function __construct(ConcreteList $list) {
$this->list = $list;
$this->index = 0;
}
public function moveNext() {
return $this->index < $this->list->length() ? true :false;
}
public function currentItem() {
return $this->list->getElement($this->index);
}
public function first() {
$this->index = 0;
}
public function nexts() {
if($this->index < $this->list->length()) {
$this->index++;
}
}
}
$list = new ConcreteList();
$iterator = $list->getIterator();
while($iterator->moveNext()) {
$i = $iterator->currentItem();
echo $i.'<br/>';
$iterator->nexts();
}
?>