<?php
class myIterator implements Iterator {
public function __construct() {
$this->position = 0;
}
public function rewind() {
var_dump(__METHOD__);
$this->position = 0;
}
public function current() {
var_dump(__METHOD__);
return $this->position;
}
public function key() {
var_dump(__METHOD__);
return $this->position;
}
public function next() {
var_dump(__METHOD__);
++$this->position;
}
public function valid() {
var_dump(__METHOD__);
return true;
}
}
$i = new LimitIterator(new myIterator, 0, 3);
$i = new CachingIterator($i);
$i->rewind();
echo "\n1st iteration\n";
echo $i->valid() ? "Valid\n" : "Not valid\n";
echo "Current key: ", $i->key() ?? 'NULL', "\n";
echo "Current value: ", $i->current() ?? 'NULL', "\n";
$i->next();
echo "\n2nd iteration\n";
echo $i->valid() ? "Valid\n" : "Not valid\n";
echo "Current key: ", $i->key() ?? 'NULL', "\n";
echo "Current value: ", $i->current() ?? 'NULL', "\n";
$i->next();
echo "\n3rd iteration\n";
echo $i->valid() ? "Valid\n" : "Not valid\n";
echo "Current key: ", $i->key() ?? 'NULL', "\n";
echo "Current value: ", $i->current() ?? 'NULL', "\n";
$i->next();
echo "\n4th iteration\n";
echo $i->valid() ? "Valid\n" : "Not valid\n";
echo "Current key: ", $i->key() ?? 'NULL', "\n";
echo "Current value: ", $i->current() ?? 'NULL', "\n";
$i->next();
echo "\n5th iteration\n";
echo $i->valid() ? "Valid\n" : "Not valid\n";
echo "Current key: ", $i->key() ?? 'NULL', "\n";
echo "Current value: ", $i->current() ?? 'NULL', "\n";
$i->next();
preferences:
16.5 ms | 402 KiB | 5 Q