iterators_004.phpt 882 B

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