1--TEST--
2ZE2 ArrayAccess::offsetGet ambiguties
3--INI--
4error_reporting=4095
5--FILE--
6<?php
7class ObjectOne implements ArrayAccess {
8
9	public $a = array('1st', 1, 2=>'3rd', '4th'=>4);
10
11	function offsetExists($index) {
12		echo __METHOD__ . "($index)\n";
13		return array_key_exists($index, $this->a);
14	}
15	function offsetGet($index) {
16		echo __METHOD__ . "($index)\n";
17		switch($index) {
18		case 1:
19			$a = 'foo';
20			return $a . 'Bar';
21		case 2:
22			static $a=1;
23			return $a;
24		}
25		return $this->a[$index];
26	}
27	function offsetSet($index, $newval) {
28		echo __METHOD__ . "($index,$newval)\n";
29		if ($index==3) {
30			$this->cnt = $newval;
31		}
32		return $this->a[$index] = $newval;
33	}
34	function offsetUnset($index) {
35		echo __METHOD__ . "($index)\n";
36		unset($this->a[$index]);
37	}
38}
39
40$obj = new ObjectOne;
41
42var_dump($obj[1]);
43var_dump($obj[2]);
44$obj[2]++;
45var_dump($obj[2]);
46
47?>
48===DONE===
49--EXPECTF--
50ObjectOne::offsetGet(1)
51string(6) "fooBar"
52ObjectOne::offsetGet(2)
53int(1)
54ObjectOne::offsetGet(2)
55
56Notice: Indirect modification of overloaded element of ObjectOne has no effect in %sarray_access_003.php on line 39
57ObjectOne::offsetGet(2)
58int(1)
59===DONE===
60