php包装迭代器如何理解
450
1、本身也是一个迭代器,当被实例化时,又需要被传递到另一个迭代器内部保存,即内部迭代InnerIterator。
2、可通过继承IteratorIterator实现对原有迭代器功能的升级。
其构造参数也必须是迭代器,而参数签名本身就是需要一个对象,实现了Traversable接口。
实例
classOutIteratorextendsIteratorIterator { publicfunctionrewind() { echo__METHOD__,PHP_EOL; returnparent::rewind(); publicfunctionvalid() { echo__METHOD__,PHP_EOL; returnparent::valid(); publicfunctioncurrent() { echo__METHOD__,PHP_EOL; returnparent::current().'_suffix'; publicfunctionkey() { echo__METHOD__,PHP_EOL; returnparent::key(); publicfunctionnext() { echo__METHOD__,PHP_EOL; returnparent::next(); publicfunctiongetInnerIterator() { echo__METHOD__,PHP_EOL; returnparent::getInnerIterator(); $iterator=newOutIterator(newArrayIterator([1,2,3])); foreach($iteratoras$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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。