iterator_039.phpt 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. --TEST--
  2. SPL: LimitIterator and backward seeking
  3. --FILE--
  4. <?php
  5. class NumericArrayIterator implements Iterator
  6. {
  7. protected $a;
  8. protected $i = 0;
  9. public function __construct($a)
  10. {
  11. echo __METHOD__ . "\n";
  12. $this->a = $a;
  13. }
  14. public function valid()
  15. {
  16. echo __METHOD__ . "\n";
  17. return $this->i < count($this->a);
  18. }
  19. public function rewind()
  20. {
  21. echo __METHOD__ . "\n";
  22. $this->i = 0;
  23. }
  24. public function key()
  25. {
  26. echo __METHOD__ . "\n";
  27. return $this->i;
  28. }
  29. public function current()
  30. {
  31. echo __METHOD__ . "\n";
  32. return $this->a[$this->i];
  33. }
  34. public function next()
  35. {
  36. echo __METHOD__ . "\n";
  37. $this->i++;
  38. }
  39. }
  40. $it = new LimitIterator(new NumericArrayIterator(array(12, 25, 42, 56)));
  41. foreach($it as $k => $v)
  42. {
  43. var_dump($k);
  44. var_dump($v);
  45. }
  46. echo "===SEEK===\n";
  47. $it->seek(2);
  48. echo "===LOOP===\n";
  49. foreach(new NoRewindIterator($it) as $k => $v)
  50. {
  51. var_dump($k);
  52. var_dump($v);
  53. }
  54. ?>
  55. ===DONE===
  56. <?php exit(0); ?>
  57. --EXPECT--
  58. NumericArrayIterator::__construct
  59. NumericArrayIterator::rewind
  60. NumericArrayIterator::valid
  61. NumericArrayIterator::valid
  62. NumericArrayIterator::current
  63. NumericArrayIterator::key
  64. int(0)
  65. int(12)
  66. NumericArrayIterator::next
  67. NumericArrayIterator::valid
  68. NumericArrayIterator::current
  69. NumericArrayIterator::key
  70. int(1)
  71. int(25)
  72. NumericArrayIterator::next
  73. NumericArrayIterator::valid
  74. NumericArrayIterator::current
  75. NumericArrayIterator::key
  76. int(2)
  77. int(42)
  78. NumericArrayIterator::next
  79. NumericArrayIterator::valid
  80. NumericArrayIterator::current
  81. NumericArrayIterator::key
  82. int(3)
  83. int(56)
  84. NumericArrayIterator::next
  85. NumericArrayIterator::valid
  86. ===SEEK===
  87. NumericArrayIterator::rewind
  88. NumericArrayIterator::valid
  89. NumericArrayIterator::next
  90. NumericArrayIterator::valid
  91. NumericArrayIterator::next
  92. NumericArrayIterator::valid
  93. NumericArrayIterator::valid
  94. NumericArrayIterator::current
  95. NumericArrayIterator::key
  96. ===LOOP===
  97. int(2)
  98. int(42)
  99. NumericArrayIterator::next
  100. NumericArrayIterator::valid
  101. NumericArrayIterator::current
  102. NumericArrayIterator::key
  103. int(3)
  104. int(56)
  105. NumericArrayIterator::next
  106. NumericArrayIterator::valid
  107. ===DONE===