/
vshmidt
/
php
Обзор
Документация
Войти
/
vshmidt
/
php
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/classes/iterators_007.phpt
41 строка
1 KB
Máté Kocsis
Declare tentative return types for Zend (#7251)
19 июл 2021, 14:44
Не верифицирован
19 июл 2021, 14:44
75a678a
Код
Авторство
О чём код?
--TEST-- ZE2 iterators and exceptions --FILE-- <?php class Test implements Iterator { public $arr = array(1, 2, 3); public $x = 0; public function rewind(): void { if ($this->x == 0) throw new Exception(__METHOD__); reset($this->arr); } public function current(): mixed { if ($this->x == 1) throw new Exception(__METHOD__); return current($this->arr); } public function key(): mixed { if ($this->x == 2) throw new Exception(__METHOD__); return key($this->arr); } public function next(): void { if ($this->x == 3) throw new Exception(__METHOD__); next($this->arr); } public function valid(): bool { if ($this->x == 4) throw new Exception(__METHOD__); return (key($this->arr) !== NULL); } } $t = new Test(); while($t->x < 5) { try { foreach($t as $k => $v) { echo "Current\n"; } } catch(Exception $e) { echo "Caught in " . $e->getMessage() . "()\n"; } $t->x++; } ?> --EXPECT-- Caught in Test::rewind() Caught in Test::current() Caught in Test::key() Current Caught in Test::next() Caught in Test::valid()