PHP 迭代器模式

时间:2023-03-09 15:31:08
PHP 迭代器模式

迭代器:类继承PHP的Iterator接口,批量操作。
1. 迭代器模式,在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素。
2. 相比传统的编程模式,迭代器模式可以隐藏遍历元素的所需操作。
接口Iterator
current() 返回当前元素
key() 返回当前元素的键
next() 向前移动到下一个元素
rewind() 返回到迭代器的第一个元素

class AllUser implements \Iterator
{
protected $index = 0;
protected $data = []; public function __construct()
{
$link = mysqli_connect('192.168.0.91', 'root', '123', 'xxx');
$rec = mysqli_query($link, 'select id from doc_admin');
$this->data = mysqli_fetch_all($rec, MYSQLI_ASSOC);
} //1 重置迭代器
public function rewind()
{
$this->index = 0;
}
xxx
//2 验证迭代器是否有数据
public function valid()
{
return $this->index < count($this->data);
} //3 获取当前内容
public function current()
{
$id = $this->data[$this->index];
return User::find($id);
} //4 移动key到下一个
public function next()
{
return $this->index++;
} //5 迭代器位置key
public function key()
{
return $this->index;
}
} //实现迭代遍历用户表
$users = new AllUser();
//可实时修改
foreach ($users as $user){
$user->add_time = time();
$user->save();
}