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