iterators_004.phpt 918 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. --TEST--
  2. ZE2 iterators must be implemented
  3. --FILE--
  4. <?php
  5. echo "1st try\n";
  6. class c1 {}
  7. $obj = new c1();
  8. foreach($obj as $w) {
  9. echo "object:$w\n";
  10. }
  11. echo "2nd try\n";
  12. class c2 {
  13. public $max = 3;
  14. public $num = 0;
  15. function current() {
  16. echo __METHOD__ . "\n";
  17. return $this->num;
  18. }
  19. function next(): void {
  20. echo __METHOD__ . "\n";
  21. $this->num++;
  22. }
  23. function valid(): bool {
  24. echo __METHOD__ . "\n";
  25. return $this->num < $this->max;
  26. }
  27. function key(): mixed {
  28. echo __METHOD__ . "\n";
  29. switch($this->num) {
  30. case 0: return "1st";
  31. case 1: return "2nd";
  32. case 2: return "3rd";
  33. default: return "???";
  34. }
  35. }
  36. }
  37. $obj = new c2();
  38. foreach($obj as $v => $w) {
  39. echo "object:$v=>$w\n";
  40. }
  41. print "Done\n";
  42. ?>
  43. --EXPECT--
  44. 1st try
  45. 2nd try
  46. object:max=>3
  47. object:num=>0
  48. Done