Итератор - объект, который позволяет обходить коллекцию элементов через единый интерфейс.
class FileLineIterator implements Iterator {
private $file;
private int $line = 0;
public function current(): string { return fgets($this->file); }
public function key(): int { return $this->line; }
public function next(): void { $this->line++; }
public function rewind(): void { rewind($this->file); $this->line = 0; }
public function valid(): bool { return !feof($this->file); }
}
Объекты, реализующие Iterator или IteratorAggregate, можно использовать в foreach.
SPL-итераторы: ArrayIterator, DirectoryIterator, RecursiveIteratorIterator, FilterIterator, LimitIterator. Они позволяют обрабатывать данные лениво, без загрузки всего в память.