• Der Iterator – Teil 1

    von am 12. September 2008

    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.

    Nils Langner

    Auch wenn Ihr es mir nicht glauben werdet, aber ich habe nichts gegen PHP. Ich rege mich einfach nur gerne auf. Ok so schlimm ist es auch nicht. Eigentlich wollte ich schon immer einen Blog haben und da ...

    Zum Profil von Nils Langner

    Keine Kommentare »

    Noch keine Kommentare

    RSS Feed für Kommentare zu diesem Artikel. TrackBack URL

    Hinterlasse einen Kommentar

    Werbung
    PHP Magazin
    Ausgabe 02/2010

    Dieses Mal mit Artikeln zu den Themen OpenSocial und Apache Shindig, Graphentheorie, Smarty3

    t3n
    Ausgabe 19

    Social Media (R)evolution. Weitere Themen sind noSQL, Crowdsourcing ...

    PHP Journal
    Ausgabe 2/2010

    PHP & Windows optimal nutzen, die besten PHP-CMS im Überblick, Google-API mit Zend Framework nutzen.

    Wir wurden schon öfters gefragt, ob man uns nicht irgendwie unterstützen kann. Die Antwort war immer einfach: Klar! Am einfachsten ist es eure nächsten Einkäufe bei Amazon über unsere Link abzuwickeln. Damit würdet ihr uns schon sehr helfen. Über Co-Autoren freuen wir uns aber noch mehr.