|
ObjektiterationPHP 5 bietet eine Möglichkeit Objekte so zu definieren, dass es möglich ist eine Liste von Elementen zu durchlaufen, z.B. mit einem foreach-Statement. Standardmäßig werden alle sichtbaren Eigenschaften für die Iteration benutzt. Beispiel #1 Einfache Objektiteration
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: var1 => Wert 1 var2 => Wert 2 var3 => Wert 3 MyClass::iterateVisible: var1 => Wert 1 var2 => Wert 2 var3 => Wert 3 protected => protected var private => private var Wie die Ausgabe zeigt, lief das foreach über alle sichtbaren Eigenschaften, auf die zugegriffen werden kann. Um es einen Schritt weiter zu treiben, kann man eines der PHP 5 internen Interfaces, nämlich Iterator, implementieren. Dies erlaubt es dem Objekt vorzugeben wie es iteriert wird und welche Werte in jeder Iteration verfügbar sind. Beispiel #2 Objektiteration mit implementiertem Iterator
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: zurückspulen aktuell: 1 gültig: 1 aktuell: 1 key: 0 0: 1 nächstes: 2 aktuell: 2 gültig: 1 aktuell: 2 key: 1 1: 2 nächstes: 3 aktuell: 3 gültig: 1 aktuell: 3 key: 2 2: 3 nächstes: aktuell: gültig: Das IteratorAggregate-Interface kann als Alternative zur Implementierung aller Methoden von Iterator verwendet werden. IteratorAggregate erfordert nur die Implementierung einer einzigen Methode, IteratorAggregate::getIterator, welche eine Instanz einer Klasse, die Iterator implementiert, zurückgeben sollte. Beispiel #3 Objektiteration mit implementiertem IteratorAggregate
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: zurückspulen aktuell: Wert 1 gültig: 1 aktuell: Wert 1 key: 0 key/value: [0 -> Wert 1] nächstes: Wert 2 aktuell: Wert 2 gültig: 1 aktuell: Wert 2 key: 1 key/value: [1 -> Wert 2] nächstes: Wert 3 aktuell: Wert 3 gültig: 1 aktuell: Wert 3 key: 2 key/value: [2 -> Wert 3] nächstes: aktuell: gültig:
|