诚之和:怎么理解php包装迭代器
本篇内容介绍了“怎么理解php包装迭代器”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1、本身也是一个迭代器,当被实例化时,又需要被传递到另一个迭代器内部保存,即内部迭代InnerIterator。
2、可通过继承IteratorIterator实现对原有迭代器功能的升级。
其构造参数也必须是迭代器,而参数签名本身就是需要一个对象,实现了Traversable接口。
实例
class OutIterator extends IteratorIterator{ public function rewind() { echo __METHOD__, PHP_EOL; return parent::rewind(); } public function valid() { echo __METHOD__, PHP_EOL; return parent::valid(); } public function current() { echo __METHOD__, PHP_EOL; return parent::current() . '_suffix'; } public function key() { echo __METHOD__, PHP_EOL; return parent::key(); } public function next() { echo __METHOD__, PHP_EOL; return parent::next(); } public function getInnerIterator() { echo __METHOD__, PHP_EOL; return parent::getInnerIterator(); } } $iterator = new OutIterator(new ArrayIterator([1, 2, 3]));foreach ($iterator as $k => $v) { echo $k, ': ', $v, PHP_EOL; }// OutIterator::rewind// OutIterator::valid// OutIterator::current// OutIterator::key// 0: 1_suffix// OutIterator::next// OutIterator::valid// OutIterator::current// OutIterator::key// 1: 2_suffix// OutIterator::next// OutIterator::valid// OutIterator::current// OutIterator::key// 2: 3_suffix// OutIterator::next// OutIterator::valid
赞 (0)