phpBuddy

Tipps & Tricks

PHP Profis von morgen finden hier diverse Tipps & Tricks zu immer wiederkehrende Hürden beim programmieren. Darüber hinaus werden auch weniger bekannte Funktionen anhand von kleinen Beispielen erklärt.

Sie sind hier: Startseite Die Standard PHP Library
SPL - Die Standard PHP Library
Beitragsseiten
SPL - Die Standard PHP Library
Unser erstes Iterator-Beispiel
Mit Verzeichnissen arbeiten
Zip-Dateien on-the-fly erstellen
Backup Basis Script
Inhalte filtern
Fazit und Schlußwort
Alle Seiten

Vorwort

Mit PHP 5, das mittlerweile bereits 3 Jahre alt ist, haben auch viele neue Funktionen Einzug in den Programmierer Alltag gehalten. Einige der neuen Funktionen haben auf Anhieb den Weg in's Programmierer Herz gefunden, während andere Neuerungen nach wie vor unbeachtet bleiben.
Eine dieser genialen, aber wenig beachteten Neuerungen ist die Standard PHP Library kurz SPL. Mit wenigen Worten zu beschreiben was die SPL ist, ist nicht einfach. Prinzipiell versucht die SPL, wie es der Name schon vermuten läßt, für gewisse wiederkehrende Probleme einen einheitlichen Lösungs-Standard zu schaffen.
Der Entwickler der SPL beschreibt es auf seiner Seite so:

SPL - Standard PHP Library SPL is a collection of interfaces and classes that are meant to solve standard problems and implements some efficient data access interfaces and classes.

In dieser SPL-Einführung wollen wir als Anschauungsobjekt eine relativ primitive Kernfunktion eines Datei-Backup Scripts erstellen das Verzeichnisse rekursive ausliest, bestimmte Datei-Typen herausfiltert und dann, unter Beibehaltung der Verzeichnisstruktur, ein Zip-Archiv der Dateien erstellt. Bei dieser Aufgabe lassen wir uns von den Iterator-Klassen der SPL helfen. Das hört sich im ersten Moment vielleicht schwierig und kompliziert an, aber wie wir sehen werden ist das, dank der SPL, (fast) so einfach wie eine Email per PHP zu versenden!

Doch bevor wir anfangen sollte sich jeder der noch keine Ahnung hat was die SPL ist einen ersten Überblick verschaffen: Standard PHP Library Homepage

Sollte man nach diesem Artikel auf den Geschmack gekommen sein, so sollte dieser Link in die Bookmarks aufgenommen werden. Leider ist die SPL (noch) sehr schlecht dokumentiert auf der PHP-Webseite und vieles findet man nur durch trial&error heraus. Die Übersicht auf der Entwicklerseite bietet noch den besten Überblick was mit der SPL möglich ist.

Voraussetzungen

Dieses Einführung richtet sich an fortgeschrittene PHP Programmierer. Dementsprechend sollten folgende Voraussetzungen erfüllt sein um diesem Artikel folgen zu können:

  • fundierte PHP Kenntnisse
  • ein gutes Verständnis der OOP
  • Webserver oder Xampp mit PHP 5 - optimalerweise das aktuelle PHP 5.2.3
  • aktivierte SPL und ZipArchive Klasse (sollte standardmäßig aktiv sein)

Um zu prüfen ob die benötigten Klassen zur Verfügung stehen einfach eine PHP Datei mit dem Inhalt

echo "<pre>" .print_r( get_declared_classes(), true ). "</pre>";

auf dem Server aufrufen und schauen ob folgende Klassen-Namen aufgeführt sind.

  1. ArrayObject
  2. ArrayIterator
  3. RecursiveDirectoryIterator
  4. RecursiveIteratorIterator
  5. FilterIterator
  6. ZipArchive

Sind alle Voraussetzungen erfüllt kann es los gehen. Die Erklärungen in dieser Einleitung fallen etwas knapper aus, als es in meinen anderen Tutorials der Fall ist. Grund dafür ist, daß der Artikel auch ohne detaillierte Erläuterungen recht lang ist und darüber hinaus ist der Stoff nicht schwer zu verstehen, wenn man die oben erwähnten Voraussetzungen mitbringt.

Was ist ein Iterator?

Der Ausdruck Iterator ist jetzt schon häufiger gefallen, deswegen sollten wir vielleicht erst einmal klären was ein Iterator überhaupt ist. Am besten trifft wohl die Bezeichnung Zeiger als Übersetzung zu. Wenn wir uns durch ein Objekt bewegen (iterate), verschieben wir dabei einen Zeiger (Iterator) innerhalb des Objekts um auf bestimmte Inhalte zuzugreifen. Dabei ist es uns egal wie die Struktur der Daten aussieht, alles was uns interessiert ist deren Inhalt. In allen untenstehenden Beispielen werde ich den Ausdruck Zeiger verwenden, damit man die Funktionsweise des Iterator besser nachvollziehen kann.