Интерфейс для внешних итераторов или объектов, которые могут быть итерированы внутри себя.
interface Iterator extends Traversable {
/* Methods */
public current(): mixed
public key(): mixed
public next(): void
public rewind(): void
public valid(): bool
}
В этом примере показано, в каком порядке вызываются методы при использовании foreach с итератором.
<?php
class myIterator implements Iterator {
private $position = 0;
private $array = array(
"firstelement",
"secondelement",
"lastelement",
);
public function __construct() {
$this->position = 0;
}
public function rewind() {
var_dump(__METHOD__);
$this->position = 0;
}
public function current() {
var_dump(__METHOD__);
return $this->array[$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 isset($this->array[$this->position]);
}
}
$it = new myIterator;
foreach($it as $key => $value) {
var_dump($key, $value);
echo "\n";
}
?>
Iterator::current
Iterator::current — Возвращает текущий элемент
public Iterator::current(): mixed
Iterator::key
Iterator::key — Возвращает ключ текущего элемента
public Iterator::key(): mixed
Iterator::next
Iterator::next — Перейти к следующему элементу
public Iterator::next(): void
Iterator::rewind
Iterator::rewind — Перематывает итератор к первому элементу
public Iterator::rewind(): void
Iterator::valid
Iterator::valid — Проверяет, действительна ли текущая позиция
public Iterator::valid(): bool
0 комментариев