迭代器模式,在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素。
,迭代器模式可以隐藏遍历元素所需要的操作。
<?php
namespace Baobab;
class AllHacl implements \iterator{
protected $ids;protected $index;//当前位置
function __construct(){
$db = Factory::getDatabase('ha_cl');
$result = $db->query('select ID from ha_cl');
$this->ids = $result->fetch_all(MYSQLI_ASSOC);
}
/**
* 返回当前元素
*/
function current(){
$id = $this->ids[$this->index]['ID'];
return Factory::getHacl($id);
}
/**
* 向前移动到下一个元素
*/
function next(){
$this->index ++;
}
/**
* 返回到迭代器的第一个元素
*/
function rewind(){
$this->index = 0;
}
/**
* 查询当前位置是否有数据
*/
function valid(){
return $this->index - count($this->ids);
}
/**
* 返回当前元素的键
*/
function key(){
return $this->index;
}
}
$hacls = new \Baobab\AllHacl();
foreach($hacls as $hacl){
var_dump($hacl->haclname);
}