Iterator-Schnittstellen
Ein Objekt einer Klasse, die die vordefinierte Schnittstelle Iterator umsetzt, ist iterierbar. Das bedeutet, dass ein solches Objekt eine Reihe von Elementen umfasst, die mithilfe einer foreach-Schleife durchlaufen werden können. Dazu müssen in der Klasse die folgenden Methoden definiert werden:
- current(): Diese Methode liefert das aktuelle Element.
- next(): Das nächste Element wird zum aktuelle Element.
- key(): Diese Methode liefert den Schlüssel des aktuellen Elements.
- valid(): Diese Methode liefert den booleschen Wert. True bedeutet, dass das aktuelle Element gültig ist. Auf diese Weise kann festgestellt werden, ob das Ende eines Durchlaufs erreicht ist.
- rewind(): Das erste Element wird zum aktuellen Element. Diese Methode spult sozusagen wieder an den Anfang zurück.
Quellcode
interfaceIterator.php
class Feld implements Iterator
{
private $nr;
private $zahlen = array(17.5, 19.2, 21.8, 21.6, 18.1);
function __construct() { $this->nr = 0; }
function current() { return $this->zahlen[$this->nr]; }
function next() { $this->nr = $this->nr + 2; }
function key() { return $this->nr; }
function valid() { return isset($this->zahlen[$this->nr]);}
function rewind() { $this->nr = 0; }
}
$feldObj = new Feld;
foreach($feldObj as $schluessel => $wert)
echo "$schluessel/$wert ";
echo "
";
for ($feldObj->rewind(); $feldObj->valid(); $feldObj->next())
{
$schluessel = $feldObj->key();
$wert = $feldObj->current();
echo "$schluessel/$wert ";
}
Ausgabe
Array 17.5, 19.2, 21.8, 21.6, 18.1
Stelle im Array: 0/Wert: 17.5 Stelle im Array: 2/Wert: 21.8 Stelle im Array: 4/Wert: 18.1
Stelle im Array: 0/Wert: 17.5 Stelle im Array: 2/Wert: 21.8 Stelle im Array: 4/Wert: 18.1