B10:迭代器模式 Iterator
Posted 罗夏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了B10:迭代器模式 Iterator相关的知识,希望对你有一定的参考价值。
提供了一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示.
适用场景:
当你需要访问一个聚合对象,而这个对象不论是什么,你都需要遍历的时候,就用迭代器.
UML:
示例代码:
class User { private $name,$regTime,$money; public function __construct($name, $regTime) { $this->name = $name; $this->regTime = $regTime; } public function setMoney($money) { $this->money = $money; } public function __toString() { return "{$this->name} : {$this->regTime} : {$this->money}"; } } class UserIterator implements Iterator { private $users = array(); private $valid = false; public function __construct() { try{ $sql = "SELECT * FROM yx_users"; $pdo = new PDO(\'mysql:host=localhost;dbname=db_zuiyouxin\', \'root\', \'root\'); $res = $pdo->query($sql); foreach ($res as $row) { $user = new User($row[\'name\'], $row[\'created_at\']); $user->setMoney($row[\'money\']); $this->users[$row[\'id\']] = $user; } $pdo = null; } catch (Exception $e) { die(\'Error:\' . $e->getMessage()); } } public function current() { return current($this->users); } public function next() { $this->valid = (next($this->users) === false) ? false : true; } public function key() { return key($this->users); } public function valid() { return $this->valid; } public function rewind() { $this->valid = (reset($this->users) === false) ? false : true; } } $users = new UserIterator(); foreach ($users as $key => $val) { echo $key; echo $val; echo "<br>"; }
以上是关于B10:迭代器模式 Iterator的主要内容,如果未能解决你的问题,请参考以下文章