自动PHP5开始,标准库就支持了迭代器(Iterator)接口,实现这个接口,就可以像遍历数组般,遍历对象。
一、迭代器相关接口
| 接口 | 说明 |
|---|---|
| Traversable | 无法被单独实现,必须由Iterator 或者 IteratorAggregate 接口实现。可用与检测类是否支持被foreach遍历 |
| Iterator | 迭代器接口,实现此接口的类,可被外部迭代和控制迭代流程 |
| IteratorAggregate | 外部迭代器接口,返回一个迭代器,不需要实现具体迭代逻辑,相当于包装一层 |
Iterator 和 IteratorAggregate 是所有迭代器的基础实现接口。
除了手动实现上面两个基础迭代器接口,PHP标准库还内置了很多Iterator接口可使用,例如ArrayIterator, IteratorIterator, EmptyIterator
二、迭代器示例
2.1 Iterator实现示例
下面是CSV文件迭代器的实现
1 | class CsvIterator implements \Iterator |
2.2 IteratorAggregate实现示例
1 |
|
三、相关链接
- 本文作者: 暮秋人
- 本文链接: https://muqiuren.pages.dev/2023/02/php-iterator/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!