iterator_014.phpt 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. --TEST--
  2. SPL: RecursiveIteratorIterator and beginChildren/endChildren
  3. --FILE--
  4. <?php
  5. class MyRecursiveArrayIterator extends RecursiveArrayIterator
  6. {
  7. function valid()
  8. {
  9. if (!parent::valid())
  10. {
  11. echo __METHOD__ . " = false\n";
  12. return false;
  13. }
  14. else
  15. {
  16. return true;
  17. }
  18. }
  19. function getChildren()
  20. {
  21. echo __METHOD__ . "\n";
  22. return parent::getChildren();
  23. }
  24. }
  25. class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
  26. {
  27. function rewind()
  28. {
  29. echo __METHOD__ . "\n";
  30. parent::rewind();
  31. }
  32. function valid()
  33. {
  34. echo __METHOD__ . "\n";
  35. return parent::valid();
  36. }
  37. function current()
  38. {
  39. echo __METHOD__ . "\n";
  40. return parent::current();
  41. }
  42. function key()
  43. {
  44. echo __METHOD__ . "\n";
  45. return parent::key();
  46. }
  47. function next()
  48. {
  49. echo __METHOD__ . "\n";
  50. parent::next();
  51. }
  52. function beginChildren()
  53. {
  54. echo __METHOD__ . "(".$this->getDepth().")\n";
  55. }
  56. function endChildren()
  57. {
  58. echo __METHOD__ . "(".$this->getDepth().")\n";
  59. }
  60. }
  61. foreach(new RecursiveArrayIteratorIterator(new MyRecursiveArrayIterator(array("a", array("ba", array("bba", "bbb"), array(array("bcaa"))), array("ca"), "d"))) as $k=>$v)
  62. {
  63. echo "$k=>$v\n";
  64. }
  65. ?>
  66. ===DONE===
  67. <?php exit(0); ?>
  68. --EXPECT--
  69. RecursiveArrayIteratorIterator::rewind
  70. RecursiveArrayIteratorIterator::valid
  71. RecursiveArrayIteratorIterator::current
  72. RecursiveArrayIteratorIterator::key
  73. 0=>a
  74. RecursiveArrayIteratorIterator::next
  75. MyRecursiveArrayIterator::getChildren
  76. RecursiveArrayIteratorIterator::beginChildren(1)
  77. RecursiveArrayIteratorIterator::valid
  78. RecursiveArrayIteratorIterator::current
  79. RecursiveArrayIteratorIterator::key
  80. 0=>ba
  81. RecursiveArrayIteratorIterator::next
  82. MyRecursiveArrayIterator::getChildren
  83. RecursiveArrayIteratorIterator::beginChildren(2)
  84. RecursiveArrayIteratorIterator::valid
  85. RecursiveArrayIteratorIterator::current
  86. RecursiveArrayIteratorIterator::key
  87. 0=>bba
  88. RecursiveArrayIteratorIterator::next
  89. RecursiveArrayIteratorIterator::valid
  90. RecursiveArrayIteratorIterator::current
  91. RecursiveArrayIteratorIterator::key
  92. 1=>bbb
  93. RecursiveArrayIteratorIterator::next
  94. MyRecursiveArrayIterator::valid = false
  95. RecursiveArrayIteratorIterator::endChildren(2)
  96. MyRecursiveArrayIterator::getChildren
  97. RecursiveArrayIteratorIterator::beginChildren(2)
  98. MyRecursiveArrayIterator::getChildren
  99. RecursiveArrayIteratorIterator::beginChildren(3)
  100. RecursiveArrayIteratorIterator::valid
  101. RecursiveArrayIteratorIterator::current
  102. RecursiveArrayIteratorIterator::key
  103. 0=>bcaa
  104. RecursiveArrayIteratorIterator::next
  105. MyRecursiveArrayIterator::valid = false
  106. RecursiveArrayIteratorIterator::endChildren(3)
  107. MyRecursiveArrayIterator::valid = false
  108. RecursiveArrayIteratorIterator::endChildren(2)
  109. MyRecursiveArrayIterator::valid = false
  110. RecursiveArrayIteratorIterator::endChildren(1)
  111. MyRecursiveArrayIterator::getChildren
  112. RecursiveArrayIteratorIterator::beginChildren(1)
  113. RecursiveArrayIteratorIterator::valid
  114. RecursiveArrayIteratorIterator::current
  115. RecursiveArrayIteratorIterator::key
  116. 0=>ca
  117. RecursiveArrayIteratorIterator::next
  118. MyRecursiveArrayIterator::valid = false
  119. RecursiveArrayIteratorIterator::endChildren(1)
  120. RecursiveArrayIteratorIterator::valid
  121. RecursiveArrayIteratorIterator::current
  122. RecursiveArrayIteratorIterator::key
  123. 3=>d
  124. RecursiveArrayIteratorIterator::next
  125. MyRecursiveArrayIterator::valid = false
  126. RecursiveArrayIteratorIterator::valid
  127. MyRecursiveArrayIterator::valid = false
  128. ===DONE===