1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00
Files
archived-php-src/ext/spl/tests/iterator_008.phpt
Nikita Popov f556a30b92 Narrow ArrayIterator::key() return type
This can only return string|int|null, not any key type.
2021-07-15 11:03:50 +02:00

87 lines
1.5 KiB
PHP

--TEST--
SPL: InfiniteIterator
--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();
}
}
$it = new InfiniteIterator(new ArrayIteratorEx(range(0,2)));
$pos =0;
foreach ($it as $v) {
var_dump($v);
if ($pos++ > 5) {
break;
}
}
?>
--EXPECT--
ArrayIteratorEx::rewind
ArrayIteratorEx::valid
ArrayIteratorEx::current
ArrayIteratorEx::key
int(0)
ArrayIteratorEx::next
ArrayIteratorEx::valid
ArrayIteratorEx::current
ArrayIteratorEx::key
int(1)
ArrayIteratorEx::next
ArrayIteratorEx::valid
ArrayIteratorEx::current
ArrayIteratorEx::key
int(2)
ArrayIteratorEx::next
ArrayIteratorEx::valid
ArrayIteratorEx::rewind
ArrayIteratorEx::valid
ArrayIteratorEx::current
ArrayIteratorEx::key
int(0)
ArrayIteratorEx::next
ArrayIteratorEx::valid
ArrayIteratorEx::current
ArrayIteratorEx::key
int(1)
ArrayIteratorEx::next
ArrayIteratorEx::valid
ArrayIteratorEx::current
ArrayIteratorEx::key
int(2)
ArrayIteratorEx::next
ArrayIteratorEx::valid
ArrayIteratorEx::rewind
ArrayIteratorEx::valid
ArrayIteratorEx::current
ArrayIteratorEx::key
int(0)