📄 iterator_031.phpt
字号:
--TEST--SPL: AppendIterator::append() rewinds when neccessary--SKIPIF--<?php if (!extension_loaded("spl")) print "skip"; ?>--FILE--<?phpclass MyArrayIterator extends ArrayIterator{ function rewind() { echo __METHOD__ . "\n"; parent::rewind(); }}$it = new MyArrayIterator(array(1,2));foreach($it as $k=>$v){ echo "$k=>$v\n";}class MyAppendIterator extends AppendIterator{ function __construct() { echo __METHOD__ . "\n"; } function rewind() { echo __METHOD__ . "\n"; parent::rewind(); } function valid() { echo __METHOD__ . "\n"; return parent::valid(); } function append(Iterator $what) { echo __METHOD__ . "\n"; parent::append($what); } function parent__construct() { parent::__construct(); }}$ap = new MyAppendIterator;try{ $ap->append($it);}catch(BadMethodCallException $e){ echo $e->getMessage() . "\n";}$ap->parent__construct();try{ $ap->parent__construct($it);}catch(BadMethodCallException $e){ echo $e->getMessage() . "\n";}$ap->append($it);$ap->append($it);$ap->append($it);foreach($ap as $k=>$v){ echo "$k=>$v\n";}?>===DONE===<?php exit(0); ?>--EXPECT--MyArrayIterator::rewind0=>11=>2MyAppendIterator::__constructMyAppendIterator::appendClasses derived from AppendIterator must call AppendIterator::__construct()AppendIterator::getIterator() must be called exactly once per instanceMyAppendIterator::appendMyArrayIterator::rewindMyAppendIterator::appendMyAppendIterator::appendMyAppendIterator::rewindMyArrayIterator::rewindMyAppendIterator::valid0=>1MyAppendIterator::valid1=>2MyArrayIterator::rewindMyAppendIterator::valid0=>1MyAppendIterator::valid1=>2MyArrayIterator::rewindMyAppendIterator::valid0=>1MyAppendIterator::valid1=>2MyAppendIterator::valid===DONE===
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -