1--TEST-- 2SPL: AppendIterator and its ArrayIterator 3--FILE-- 4<?php 5 6function test_error_handler($errno, $msg, $filename, $linenum) 7{ 8 echo "Error $msg in $filename on line $linenum\n"; 9 return true; 10} 11 12set_error_handler('test_error_handler'); 13 14$it = new AppendIterator; 15 16try { 17 $it->append(array()); 18} catch (Error $e) { 19 test_error_handler($e->getCode(), $e->getMessage(), $e->getFile(), $e->getLine()); 20} 21$it->append(new ArrayIterator(array(1))); 22$it->append(new ArrayIterator(array(21, 22))); 23 24var_dump($it->getArrayIterator()); 25 26$it->append(new ArrayIterator(array(31, 32, 33))); 27 28var_dump($it->getArrayIterator()); 29 30$idx = 0; 31 32foreach($it as $k => $v) 33{ 34 echo '===' . $idx++ . "===\n"; 35 var_dump($it->getIteratorIndex()); 36 var_dump($k); 37 var_dump($v); 38} 39 40?> 41--EXPECTF-- 42Error AppendIterator::append(): Argument #1 ($iterator) must be of type Iterator, array given in %s on line %d 43object(ArrayIterator)#%d (1) { 44 %s"storage"%s"ArrayIterator":private]=> 45 array(2) { 46 [0]=> 47 object(ArrayIterator)#%d (1) { 48 %s"storage"%s"ArrayIterator":private]=> 49 array(1) { 50 [0]=> 51 int(1) 52 } 53 } 54 [1]=> 55 object(ArrayIterator)#%d (1) { 56 %s"storage"%s"ArrayIterator":private]=> 57 array(2) { 58 [0]=> 59 int(21) 60 [1]=> 61 int(22) 62 } 63 } 64 } 65} 66object(ArrayIterator)#%d (1) { 67 %s"storage"%s"ArrayIterator":private]=> 68 array(3) { 69 [0]=> 70 object(ArrayIterator)#%d (1) { 71 %s"storage"%s"ArrayIterator":private]=> 72 array(1) { 73 [0]=> 74 int(1) 75 } 76 } 77 [1]=> 78 object(ArrayIterator)#%d (1) { 79 %s"storage"%s"ArrayIterator":private]=> 80 array(2) { 81 [0]=> 82 int(21) 83 [1]=> 84 int(22) 85 } 86 } 87 [2]=> 88 object(ArrayIterator)#%d (1) { 89 %s"storage"%s"ArrayIterator":private]=> 90 array(3) { 91 [0]=> 92 int(31) 93 [1]=> 94 int(32) 95 [2]=> 96 int(33) 97 } 98 } 99 } 100} 101===0=== 102int(0) 103int(0) 104int(1) 105===1=== 106int(1) 107int(0) 108int(21) 109===2=== 110int(1) 111int(1) 112int(22) 113===3=== 114int(2) 115int(0) 116int(31) 117===4=== 118int(2) 119int(1) 120int(32) 121===5=== 122int(2) 123int(2) 124int(33) 125