簡介: 迭代器模式,是行為型的設計模式。 提供一中方法順序訪問一個聚合對象中的各個元素,而又不需要暴露該對象的內部表示。 適用場景: 除了學習,在PHP中幾乎沒有應用場景。 優點: 學習意義遠大於實際意義。 缺點: 實際開發中幾乎用不上,完全可以被更簡單的foreach,或者是所用框架內置的遍歷方案 ...
簡介:
迭代器模式,是行為型的設計模式。
提供一中方法順序訪問一個聚合對象中的各個元素,而又不需要暴露該對象的內部表示。
適用場景:
除了學習,在PHP中幾乎沒有應用場景。
優點:
學習意義遠大於實際意義。
缺點:
實際開發中幾乎用不上,完全可以被更簡單的foreach,或者是所用框架內置的遍歷方案替代。
代碼:
//聲明一個迭代器類,並實現內置的迭代器介面
class MyIterator implements \Iterator {
private $data;
private $index;
//初始化數據
public function __construct($data) {
$this->data = $data;
$this->index = 0;
}
//獲取當前數據
public function current() {
return $this->data[$this->index] ?? null;
}
//移動指針
public function next() {
++ $this->index;
}
//獲取當前位置
public function key() {
return $this->index;
}
//通過數量判斷指針的位置是否合法
public function valid() {
return $this->index < count($this->data);
}
//重置指針到開始位置
public function rewind() {
$this->data = 0;
}
}
//調用端================================================================
//是可以通過一些PHP數組的方式去迭代關聯數組,不過確實永不上
$my_iterator = new MyIterator(['one', 'two', 'three', 'four', 'five']);
while($my_iterator->valid()) {
echo $my_iterator->current() . PHP_EOL;
$my_iterator->next();
}
$my_iterator->rewind();