Интерфейс Iterator
(PHP 5, PHP 7, PHP 8)
Введение
Интерфейс для внешних итераторов или объектов, которые могут повторять себя изнутри.
Обзор интерфейсов
Предопределенные итераторы
PHP уже предоставляет некоторые итераторы для многих ежедневных задач. См. список итераторов SPL для более детальной информации.
Примеры
Пример #1 Основы использования
Этот пример демонстрирует в каком порядке вызываются методы, когда используется с итератором оператор 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";
}
?>
Результатом выполнения данного примера будет что-то подобное:
string(18) "myIterator::rewind" string(17) "myIterator::valid" string(19) "myIterator::current" string(15) "myIterator::key" int(0) string(12) "firstelement" string(16) "myIterator::next" string(17) "myIterator::valid" string(19) "myIterator::current" string(15) "myIterator::key" int(1) string(13) "secondelement" string(16) "myIterator::next" string(17) "myIterator::valid" string(19) "myIterator::current" string(15) "myIterator::key" int(2) string(11) "lastelement" string(16) "myIterator::next" string(17) "myIterator::valid"
Содержание
- Iterator::current — Возврат текущего элемента
- Iterator::key — Возврат ключа текущего элемента
- Iterator::next — Переход к следующему элементу
- Iterator::rewind — Перемотать итератор на первый элемент
- Iterator::valid — Проверяет корректность текущей позиции