frankx: SimpleXMLIterator

Hellihello

die Funktionen des SimpleXMLIterator sind bei php.net undokumentiert. Kann mir jemand die Vorteile eines Iterators sagen? Iteriere ich nicht genausogut mit foreach durch die XML-Struktur? Irgend einen Vorteil wird der Iterator ja wohl haben, vermute ich.

Dank und Gruß,

frankx

  1. echo $begrüßung;

    die Funktionen des SimpleXMLIterator sind bei php.net undokumentiert.

    Wenn man dem Hinweis ganz zu Anfang des Kapitels zu den Standard PHP Library (SPL) Functions folgt, findet man eine ausführlichere Dokumentation zur SPL und deren Einzelteilen.

    Kann mir jemand die Vorteile eines Iterators sagen?

    Frage nicht nach Vor- und Nachteilen, frage nach Eigenschaften und beurteile dann selbst, ob diese in deinem jeweiligen Anwendungsfall von Vorteil oder Nachteil sind.

    Ein Iterator stellt Funktionalität zur Verfügung, mit der man sich durch eine Datenmenge bewegen kann.

    Iteriere ich nicht genausogut mit foreach durch die XML-Struktur?

    foreach bedient sich der Funktionen eines Iterators, um dem Anwender nacheinander die Einzeldaten einer Menge präsentieren zu können. Das ursprüngliche foreach PHPs konnte sich nur über Arrays bewegen. Mit der SPL kann man seine Klassen um diverse Funktionalitäten erweitern. Man erbt beispielsweise das Interface Iterator und implementiert die von ihm geforderten Funktionen, und dann kann man Objekte dieser Klasse dem foreach (oder auch while) übergeben. Über welche Daten und in welcher Reihenfolge dabei iteriert wird, legt man durch die Implementation der Iterator-Methoden fest. Man könnte z.B. statt zu Fetchen sich mit einem Iterator und foreach über die Ergebnismenge einer SQL-Abfrage bewegen. Man kann nun einem foreach gleichermaßen ein echtes Array oder ein Ergebnismengenobjekt übergeben, und spart sich damit, die Ergebnismenge zunächst in ein Array einlesen zu müssen.

    Weitere interessante Basis-Interface der SPL sind Countable (count() auf Objekte) und ArrayAccess (Zugriff wie auf Arrays: $objekt[key])

    echo "$verabschiedung $name";