Facebook
Twitter
Google+
Kommentare
0

Der Iterator – Teil 1

Wie ich bereits in einem Artikel beschrieben habe besitzt PHP eine Standard Library, die SPL. Hier findet man leider nicht viel, dennoch möchte ich heute auf einen der Hauptbestandteile eingehen. Der Iterator. Ein Iterator ist ein Freund von all denen, die nicht alles über einen normalen Array lösen wollen. Ich weiß, in PHP kann es schon mal vorkommen, dass man Arrays über strapaziert und genau hier setzt das Iterator Interface ein. Es gibt viele Fälle, in denen ein Array einfach nicht das hergibt, was man vielleicht braucht. Aber gehen wir erstmal auf die Idee hinter dem Iterator ein. Dieses Interface kommt überall da zum Einsatz, wo ich eine Menge von Objekten gruppieren will und diese dann durchiterieren möchte. Dieses Iterieren kann manuell passieren oder einfach über eine foreach Schleife. Ok, wie immer werdet ihr jetzt sagen, dass man das doch alle auch durch das altbewährte Array lösen kann und natürlich habt ihr auch in den einfachen Fällen Recht. Ein Array ist sogar ein Iterator, zumindest erfüllt er alle Eigenschaften eines solchen.

Schauen wir uns aber einen komplexeren Fall an. Nehmen wir an, wir haben Daten aus der Datenbank gelesen und zwar alle Städte Deutschlands, die mit A anfangen. Diese schreiben wir dann in einen Array und überreichen ihn dann an eine weitere Funktion. Diese Funktion iteriert die Array-Elemente so lange durch, bis eine bestimmte Bedingung eingetreten ist. Nach meiner Zählung gibt es genau 312.123 (+- 5) Städte in Deutschland, die mit A anfangen, wenn die gesuchte Bedingung schon beim dritten eintrifft, wurden 312.120 umsonst von der Datenbank zu PHP übermittelt. Mit einer eigenen Klasse, die das Iterator Interface implementiert wäre dies nicht passiert. Hier könnte ich bei jedem Schleifendurchlauf sagen, dass er jetzt erst das nächste Element aus der Datenbank holen soll. Dies wäre in diesem Fall ein großer Vorteil. Natürlich würde sich dieser nur auf die Übertragung der Daten und den verbrauchten Speicher auswirken. Eine Entlastung der Datenbank wäre es nicht wirklich.

So das war der erste kleine Überblick über den Iterator in PHP, Morgen werde ich ein wenig über das Interface im technischen Sinne philosophieren und vielleicht auch noch ein paar Worte drüber verlieren, warum PHP mit einer seiner Extrawürste nicht den Geschmack aller getroffen hat.

Über den Autor

Nils Langner

Nils Langner ist der Gründer von "the web hates me" und auch der Hauptautor. Im wahren Leben leitet er das Qualitätsmanagementteam im Gruner+Jahr-Digitalbereich und ist somit für Seiten wie stern.de, eltern.de und gala.de aus Qualitätssicht verantwortlich. Nils schreibt seit den Anfängen von phphatesme, welches er ebenfalls gegründet hat, nicht nur für diverse Blogs, sondern auch für Fachmagazine, wie das PHP Magazin, die t3n, die c't oder die iX. Nebenbei ist er noch ein gern gesehener Sprecher auf Konferenzen. Herr Langner schreibt die Texte über sich gerne in der dritten Form.
Kommentare

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen