Das Iterator-Interface

(PHP 5, PHP 7, PHP 8)

Einführung

Interface für externe Iteratoren oder Objekte, die selbstiterierend sind.

Interface-Übersicht

interfaceIteratorextendsTraversable {
publiccurrent(): mixed
publickey(): mixed
publicnext(): void
publicrewind(): void
publicvalid(): bool
}

Vordefinierte Iteratoren

PHP bietet bereits eine Anzahl von Iteratoren für viele alltägliche Aufgaben an. SPL-Iteratoren enthält eine entsprechende Liste.

Beispiele

Beispiel #1 Grundlegende Nutzung

Dieses Beispiel demonstriert, in welcher Reihenfolge Methoden aufgerufen werden, wenn foreach auf einem Iterator angewendet wird.

<?php
class meinIterator implements Iterator {
private
$position = 0;
private
$array = array(
"erstesElement",
"zweitesElement",
"letztesElement",
);

public function
__construct() {
$this->position = 0;
}

public function
rewind(): void {
var_dump(__METHOD__);
$this->position = 0;
}

#[
\ReturnTypeWillChange]
public function
current() {
var_dump(__METHOD__);
return
$this->array[$this->position];
}

#[
\ReturnTypeWillChange]
public function
key() {
var_dump(__METHOD__);
return
$this->position;
}

public function
next(): void {
var_dump(__METHOD__);
++
$this->position;
}

public function
valid(): bool {
var_dump(__METHOD__);
return isset(
$this->array[$this->position]);
}
}

$it = new meinIterator;

foreach(
$it as $key => $value) {
var_dump($key, $value);
echo
"\n";
}
?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

 string(18) "meinIterator::rewind" string(17) "meinIterator::valid" string(19) "meinIterator::current" string(15) "meinIterator::key" int(0) string(12) "erstesElement" string(16) "meinIterator::next" string(17) "meinIterator::valid" string(19) "meinIterator::current" string(15) "meinIterator::key" int(1) string(13) "zweitesElement" string(16) "meinIterator::next" string(17) "meinIterator::valid" string(19) "meinIterator::current" string(15) "meinIterator::key" int(2) string(11) "letztesElement" string(16) "meinIterator::next" string(17) "meinIterator::valid" 

Inhaltsverzeichnis

To Top