iterator_042.phpt 2.1 KB

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