/
vshmidt
/
php
Обзор
Документация
Войти
/
vshmidt
/
php
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
ext/spl/tests/iterator_031.phpt
113 строк
2 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: AppendIterator::append() rewinds when necessary --FILE-- <?php class MyArrayIterator extends ArrayIterator { function rewind(): void { echo __METHOD__ . "\n"; parent::rewind(); } } $it = new MyArrayIterator(array(1,2)); foreach($it as $k=>$v) { echo "$k=>$v\n"; } class MyAppendIterator extends AppendIterator { function __construct() { echo __METHOD__ . "\n"; } function rewind(): void { echo __METHOD__ . "\n"; parent::rewind(); } function valid(): bool { echo __METHOD__ . "\n"; return parent::valid(); } function append(Iterator $what): void { echo __METHOD__ . "\n"; parent::append($what); } function parent__construct() { parent::__construct(); } } $ap = new MyAppendIterator; try { $ap->append($it); } catch(\Error $e) { echo $e->getMessage() . "\n"; } $ap->parent__construct(); try { $ap->parent__construct($it); } catch(BadMethodCallException $e) { echo $e->getMessage() . "\n"; } $ap->append($it); $ap->append($it); $ap->append($it); foreach($ap as $k=>$v) { echo "$k=>$v\n"; } ?> --EXPECT-- MyArrayIterator::rewind 0=>1 1=>2 MyAppendIterator::__construct MyAppendIterator::append The object is in an invalid state as the parent constructor was not called AppendIterator::getIterator() must be called exactly once per instance MyAppendIterator::append MyArrayIterator::rewind MyAppendIterator::append MyAppendIterator::append MyAppendIterator::rewind MyArrayIterator::rewind MyAppendIterator::valid 0=>1 MyAppendIterator::valid 1=>2 MyArrayIterator::rewind MyAppendIterator::valid 0=>1 MyAppendIterator::valid 1=>2 MyArrayIterator::rewind MyAppendIterator::valid 0=>1 MyAppendIterator::valid 1=>2 MyAppendIterator::valid