spl_004.phpt 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. --TEST--
  2. SPL: iterator_apply()
  3. --FILE--
  4. <?php
  5. function my_error_handler($errno, $errstr, $errfile, $errline) {
  6. echo "Error: $errstr\n";
  7. }
  8. set_error_handler('my_error_handler');
  9. function test_arg($arg)
  10. {
  11. if ($arg instanceof Iterator)
  12. {
  13. var_dump($arg->key());
  14. var_dump($arg->current());
  15. }
  16. else
  17. {
  18. var_dump($arg);
  19. }
  20. return true;
  21. }
  22. function test()
  23. {
  24. static $arg = 0;
  25. var_dump($arg++);
  26. return true;
  27. }
  28. $it = new RecursiveArrayIterator(array(1, array(21, 22), 3));
  29. var_dump(iterator_apply($it, 'test', NULL));
  30. echo "===ARGS===\n";
  31. var_dump(iterator_apply($it, 'test_arg', array($it)));
  32. echo "===RECURSIVE===\n";
  33. $it = new RecursiveIteratorIterator($it);
  34. var_dump(iterator_apply($it, 'test'));
  35. echo "===ERRORS===\n";
  36. try {
  37. var_dump(iterator_apply($it, 'test', 1));
  38. } catch (TypeError $e) {
  39. echo $e->getMessage(), "\n";
  40. }
  41. try {
  42. var_dump(iterator_apply($it, 'non_existing_function'));
  43. } catch (TypeError $e) {
  44. echo $e->getMessage(), "\n";
  45. }
  46. try {
  47. var_dump(iterator_apply($it, 'non_existing_function', NULL, 2));
  48. } catch (TypeError $e) {
  49. echo $e->getMessage(), "\n";
  50. }
  51. ?>
  52. --EXPECT--
  53. int(0)
  54. int(1)
  55. int(2)
  56. int(3)
  57. ===ARGS===
  58. int(0)
  59. int(1)
  60. int(1)
  61. array(2) {
  62. [0]=>
  63. int(21)
  64. [1]=>
  65. int(22)
  66. }
  67. int(2)
  68. int(3)
  69. int(3)
  70. ===RECURSIVE===
  71. int(3)
  72. int(4)
  73. int(5)
  74. int(6)
  75. int(4)
  76. ===ERRORS===
  77. iterator_apply(): Argument #3 ($args) must be of type ?array, int given
  78. iterator_apply(): Argument #2 ($callback) must be a valid callback, function "non_existing_function" not found or invalid function name
  79. iterator_apply() expects at most 3 arguments, 4 given