iterator_024.phpt 847 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. --TEST--
  2. SPL: RecursiveIteratorIterator with custom iterator class
  3. --FILE--
  4. <?php
  5. $ar = array(1, 2, array(31, 32, array(331)), 4);
  6. foreach(new RecursiveIteratorIterator(new ArrayObject($ar, 0, "RecursiveArrayIterator")) as $v) echo "$v\n";
  7. $it = new ArrayObject($ar);
  8. var_dump($it->getIteratorClass());
  9. try
  10. {
  11. foreach(new RecursiveIteratorIterator(new ArrayObject($ar)) as $v) echo "$v\n";
  12. }
  13. catch (InvalidArgumentException $e)
  14. {
  15. echo $e->getMessage() . "\n";
  16. }
  17. echo "===MANUAL===\n";
  18. $it->setIteratorClass("RecursiveArrayIterator");
  19. var_dump($it->getIteratorClass());
  20. foreach(new RecursiveIteratorIterator($it) as $v) echo "$v\n";
  21. ?>
  22. --EXPECT--
  23. 1
  24. 2
  25. 31
  26. 32
  27. 331
  28. 4
  29. string(13) "ArrayIterator"
  30. An instance of RecursiveIterator or IteratorAggregate creating it is required
  31. ===MANUAL===
  32. string(22) "RecursiveArrayIterator"
  33. 1
  34. 2
  35. 31
  36. 32
  37. 331
  38. 4