/** * 1.迭代器模式,在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素 * 2.相比于传统的编程模式,迭代器模式可以隐藏遍历元素的所需的操作 */ /** * 迭代器需要实现系统内置的接口, * 并且实现接口的五个方法; * */ class AllUser implements Iterator{//系统内置的接口 protected $ids; protected $data = [];// protected $index;//当前位置 public function __construct(){ $db = Factory::createDB(); $result = $db->query('select id from user'); $this->ids = $result->fetch_all(MYSQLI_ASSOC); } //获取下一个元素 public function next(){ $this->index++; } //印证当前是否还有下一个元素 public function valid(){ //返回当前索引是不是超出了 ids 的范围 return $this->index < count($this->ids); } //获取当前的元素 public function current(){ //获取当前的元素 $id = $this->ids[$this->index]['id']; return Factory::getUser($id); } //重置迭代器 public function rewind() { //将index重置为0 $this->index = 0; } //迭代器的位置 public function key() { return $this->index; } } $users = new AllUser(); foreach ($users as $user){ var_dump($user); }
php设计模式(迭代器模式)
最新推荐文章于 2017-08-14 01:27:54 发布