/
vshmidt
/
php
Обзор
Документация
Войти
/
vshmidt
/
php
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/classes/array_access_003.phpt
57 строк
1 KB
Máté Kocsis
Declare tentative return types for Zend (#7251)
19 июл 2021, 14:44
Не верифицирован
19 июл 2021, 14:44
75a678a
Код
Авторство
О чём код?
--TEST-- ZE2 ArrayAccess::offsetGet ambiguities --INI-- error_reporting=4095 --FILE-- <?php class ObjectOne implements ArrayAccess { public $a = array('1st', 1, 2=>'3rd', '4th'=>4); function offsetExists($index): bool { echo __METHOD__ . "($index)\n"; return array_key_exists($index, $this->a); } function offsetGet($index): mixed { echo __METHOD__ . "($index)\n"; switch($index) { case 1: $a = 'foo'; return $a . 'Bar'; case 2: static $a=1; return $a; } return $this->a[$index]; } function offsetSet($index, $newval): void { echo __METHOD__ . "($index,$newval)\n"; if ($index==3) { $this->cnt = $newval; } $this->a[$index] = $newval; } function offsetUnset($index): void { echo __METHOD__ . "($index)\n"; unset($this->a[$index]); } } $obj = new ObjectOne; var_dump($obj[1]); var_dump($obj[2]); $obj[2]++; var_dump($obj[2]); ?> --EXPECTF-- ObjectOne::offsetGet(1) string(6) "fooBar" ObjectOne::offsetGet(2) int(1) ObjectOne::offsetGet(2) Notice: Indirect modification of overloaded element of ObjectOne has no effect in %sarray_access_003.php on line 39 ObjectOne::offsetGet(2) int(1)