<?php
class Shiterator implements SeekableIterator {
private $_array = array();
private $position;
public function __construct(array $array) {
$this->_array = $array;
}
public function seek($position) {
if (!isset($this->_array[$position])) {
throw new OutOfBoundsException("invalid seek position ($position)");
}
$this->position = $position;
}
public function rewind() {
$this->position = 0;
}
public function current() {
return $this->array[$this->position];
}
public function key() {
return $this->position;
}
public function next() {
++$this->position;
}
public function valid() {
return isset($this->array[$this->position]);
}
}
$stdcls = new stdClass();
$stdcls->message = 'PHP, still a peice of shit.';
$i = new Shiterator(array($stdcls));
foreach ($i as $t) {
echo $stdcls->message;
$stdcls->message = 'Zend still produces garbage.';
}
var_dump($i);
Deprecated: Return type of Shiterator::seek($position) should either be compatible with SeekableIterator::seek(int $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/tHueF on line 11
Deprecated: Return type of Shiterator::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/tHueF on line 23
Deprecated: Return type of Shiterator::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/tHueF on line 31
Deprecated: Return type of Shiterator::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/tHueF on line 27
Deprecated: Return type of Shiterator::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/tHueF on line 35
Deprecated: Return type of Shiterator::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/tHueF on line 19
object(Shiterator)#2 (2) {
["_array":"Shiterator":private]=>
array(1) {
[0]=>
object(stdClass)#1 (1) {
["message"]=>
string(27) "PHP, still a peice of shit."
}
}
["position":"Shiterator":private]=>
int(0)
}