写一个算法,使对象可以像数组一样进行foreach循环,要求属性必须是私有的(Interator模式的PHP5实现,写一类实现Interator接口)
具体代码实现如下:
class Test implements Iterator {
private $item = array(1,2,3,4,5);
public function __construct() {
}
// 重置,将数组内部指针指向第一个单元
public function rewind() {
reset($this->item);
}
// 判断单前索引游标指向的元素是否有效
public function valid() {
return ($this->current() !== false);
}
// 返回数组当前单元
public function current() {
return current($this->item);
}
// 返回单前单元的键名
public function key() {
return key($this->item);
}
// 移动单前索引游标到下一元素
public function next() {
return next($this->item);
}
}
// 测试:
$t = new Test();
foreach($t as $k=>$v) {
echo $k,'---->',$v,'<br />';
}
当执行valid返回false时,循环就此结束。