/
vshmidt
/
php
Обзор
Документация
Войти
/
vshmidt
/
php
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
ext/spl/tests/iterator_007.phpt
163 строки
3 KB
Máté Kocsis
Declare tentative return types in ext/spl - part 3 (#7239)
16 июл 2021, 13:09
Не верифицирован
16 июл 2021, 13:09
b3e0888
Код
Авторство
О чём код?
--TEST-- SPL: NoRewindIterator --FILE-- <?php class ArrayIteratorEx extends ArrayIterator { function rewind(): void { echo __METHOD__ . "\n"; parent::rewind(); } function valid(): bool { echo __METHOD__ . "\n"; return parent::valid(); } function current(): mixed { echo __METHOD__ . "\n"; return parent::current(); } function key(): string|int|null { echo __METHOD__ . "\n"; return parent::key(); } function next(): void { echo __METHOD__ . "\n"; parent::next(); } } class NoRewindIteratorEx extends NoRewindIterator { function rewind(): void { echo __METHOD__ . "\n"; parent::rewind(); } function valid(): bool { echo __METHOD__ . "\n"; return parent::valid(); } function current(): mixed { echo __METHOD__ . "\n"; return parent::current(); } function key(): mixed { echo __METHOD__ . "\n"; return parent::key(); } function next(): void { echo __METHOD__ . "\n"; parent::next(); } } $it = new NoRewindIteratorEx(new ArrayIteratorEx(range(0,3))); echo "===0===\n"; foreach ($it->getInnerIterator() as $v) { var_dump($v); } echo "===1===\n"; foreach ($it as $v) { var_dump($v); } $pos =0; $it = new NoRewindIteratorEx(new ArrayIteratorEx(range(0,3))); echo "===2===\n"; foreach ($it as $v) { var_dump($v); if ($pos++ > 1) { break; } } echo "===3===\n"; foreach ($it as $v) { var_dump($v); } echo "===4===\n"; foreach ($it as $v) { var_dump($v); } ?> --EXPECT-- ===0=== ArrayIteratorEx::rewind ArrayIteratorEx::valid ArrayIteratorEx::current int(0) ArrayIteratorEx::next ArrayIteratorEx::valid ArrayIteratorEx::current int(1) ArrayIteratorEx::next ArrayIteratorEx::valid ArrayIteratorEx::current int(2) ArrayIteratorEx::next ArrayIteratorEx::valid ArrayIteratorEx::current int(3) ArrayIteratorEx::next ArrayIteratorEx::valid ===1=== NoRewindIteratorEx::rewind NoRewindIteratorEx::valid ArrayIteratorEx::valid ===2=== NoRewindIteratorEx::rewind NoRewindIteratorEx::valid ArrayIteratorEx::valid NoRewindIteratorEx::current ArrayIteratorEx::current int(0) NoRewindIteratorEx::next ArrayIteratorEx::next NoRewindIteratorEx::valid ArrayIteratorEx::valid NoRewindIteratorEx::current ArrayIteratorEx::current int(1) NoRewindIteratorEx::next ArrayIteratorEx::next NoRewindIteratorEx::valid ArrayIteratorEx::valid NoRewindIteratorEx::current ArrayIteratorEx::current int(2) ===3=== NoRewindIteratorEx::rewind NoRewindIteratorEx::valid ArrayIteratorEx::valid NoRewindIteratorEx::current int(2) NoRewindIteratorEx::next ArrayIteratorEx::next NoRewindIteratorEx::valid ArrayIteratorEx::valid NoRewindIteratorEx::current ArrayIteratorEx::current int(3) NoRewindIteratorEx::next ArrayIteratorEx::next NoRewindIteratorEx::valid ArrayIteratorEx::valid ===4=== NoRewindIteratorEx::rewind NoRewindIteratorEx::valid ArrayIteratorEx::valid