概念
疊代器:類繼承PHP的Iterator接口,批量操作。
1. 疊代器模式,在不需要了解内部實作的前提下,周遊一個聚合對象的内部元素。
2. 相比傳統的程式設計模式,疊代器模式可以隐藏周遊元素的所需操作。
示例
接口Iterator
current() 傳回目前元素
key() 傳回目前元素的鍵
next() 向前移動到下一個元素
rewind() 傳回到疊代器的第一個元素
valid() 驗證是否有效
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();
}