Iterator
双向链表同样继承Iterator
- rewind() 重置指针,指到初始位置
- current() 返回当前指针value
- key() 返回当前key
- next() 将当前指针返回指向下一个
- valid() 判断当前是否存在 bool
ArrayIterator
foreach 循环自动转换成Iterator 形式
- seek($position) 跳转到某个元素开始遍历
- asort() value 排序
- ksort key 排序
- ....
AppendIterator
多个arrayIterator 合并成一个,array_merge() 函数类似(不太确定这个函数是否就是通过appendIterator 实现的,有空再看源码)
主要方法
- append($iterator) 附加iterator
MultipleIterator
将多个iterator 合并
实例化参数
MultipleIterator::MIT_NEED_ANY 0 以最长的Iterator 为标准,没有的value 为空
MultipleIterator::MIT_NEED_ALL 1 以最短的Iterator 为标准
MultipleIterator::MIT_KEYS_NUMERIC 0 跟第一个一样
MultipleIterator::MIT_KEYS_ASSOC 长度标准跟MIT_NEED_ANY 一样 在attach的时候需要填写key 每个attach 的iterator 都有一个key
FilesystemIterator
获取路径下的文件 new FilesystemIterator($dir)
方法
- getMTime()
- isDir()
- getSize()
- getFileName()
- .....
OuterIterator
继承iterator 的对象接口
IteratorIterator
implement outerIterator 可以重定义 iterator 里面的方法,可以在iterator 的内置方法上做一层包装,例如 重定义 current()方法,在iterator 的current() 返回后,再做一层处理
RecursiveIteratorIterator
遍历多层迭代器,例如:RecursiveDirectoryIterator 遍历所有路径下所有文件,通过 hasChildren 跟 getChildren 获取文件夹的下一层 ,递归遍历目录下的所有文件