<?php
class Items implements \Iterator
{
private $items = [];
private $index = 0;
public function current()
{
return $this->items[$this->index];
}
public function next()
{
$this->index++;
}
public function valid()
{
return isset($this->items[$this->index]);
}
public function key()
{
return $this->index;
}
public function rewind()
{
$this->index = 0;
}
public function add($item)
{
$this->items[] = $item;
}
public function remove($index)
{
unset($this->items[$index]);
}
}
//-------------------
$items = new Items();
$items->add('foo');
$items->add('bar');
$items->add('baz');
$items->remove(0);
// Expected that the loop would start with the first index of "1"
// but it doesn't output anything
foreach($items as $item) {
echo $item."\n";
}
Deprecated: Return type of Items::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/UXF3A on line 9
Deprecated: Return type of Items::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/UXF3A on line 13
Deprecated: Return type of Items::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/UXF3A on line 21
Deprecated: Return type of Items::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/UXF3A on line 17
Deprecated: Return type of Items::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/UXF3A on line 25
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Deprecated: Return type of Items::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/UXF3A on line 9
Deprecated: Return type of Items::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/UXF3A on line 13
Deprecated: Return type of Items::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/UXF3A on line 21
Deprecated: Return type of Items::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/UXF3A on line 17
Deprecated: Return type of Items::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/UXF3A on line 25
Parse error: syntax error, unexpected '[' in /in/UXF3A on line 6
Process exited with code 255.
Output for 5.1.0 - 5.1.6, 5.2.0 - 5.2.17
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/UXF3A on line 4
Parse error: syntax error, unexpected '[' in /in/UXF3A on line 6
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/UXF3A on line 4
Parse error: parse error, unexpected '[' in /in/UXF3A on line 6
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting '{' in /in/UXF3A on line 4
Process exited with code 255.