xref: /PHP-8.1/Zend/tests/dereference_005.phpt (revision 75a678a7)
1--TEST--
2Testing array dereference on object that implements ArrayAccess
3--FILE--
4<?php
5
6error_reporting(E_ALL);
7
8class obj implements arrayaccess {
9    private $container = array();
10    public function __construct() {
11        $this->container = array(
12            "one"   => 1,
13            "two"   => 2,
14            "three" => 3,
15        );
16    }
17    public function offsetSet($offset, $value): void {
18        $this->container[$offset] = $value;
19    }
20    public function offsetExists($offset): bool {
21        return isset($this->container[$offset]);
22    }
23    public function offsetUnset($offset): void {
24        unset($this->container[$offset]);
25    }
26    public function offsetGet($offset): mixed {
27        return isset($this->container[$offset]) ? $this->container[$offset] : null;
28    }
29}
30
31function x() {
32    return new obj;
33}
34var_dump(x()['two']);
35
36?>
37--EXPECT--
38int(2)
39