Verzeiht mir die Wiederauflage des alten Schinkens, der leider dem großen Crash Anfang Mai zum Opfer gefallen ist. Es ist ein wichtiger Artikel (das sehe ich in der Statistik) und deshlab sollte man das Thema nochmal aufrollen.
Beim Entwickeln von Webseiten trennen wir alles mögliche: Design von Nutzdaten, Frontend von Backend, Templates von Kontrollstrukturen, Dateien von Datenbanken und vieles mehr. Das ist auf der einen Seite natürlich gut und übersichtlich, auf der anderen Seite kommt man in die Verlegenheit von einer Stelle zur anderen Daten schaufeln zu müssen.
Stichwort Ajax und Web 2.0 - die vielen schönen Javascript-Frameworks wie Protoype helfen zwar bei der Manipulation des DOMs, bei dem Zugriff auf Datenbanken sind sie leider keine große Hilfe. Welche Formate gibt es, um Daten von einer Stelle zur Anderen zu verladen? Wie legt man seine Ini- und Config-Dateien am besten ab? Fragen über Fragen, und hier gibts die Antwort :)
Zum besseren Überblick werfe ich einfach mal wild wie ich bin Dateiformate in den Raum - Nicht sortiert, einfach so wie sie mir einfallen:
- XML
- JSON
- YAML
- INI
- PHP-Serialisiert
Der Urgroßvater aller Konfigurationsdateien ist sicherlich und unbestritten das Ini-Dateiformat. Und sogar PHP bringt einen eigenen Parser mit, der das Einlesen erleichtert. Der Vorteil des Formats liegt klar auf der Hand: Jeder kennt es, jeder kann es gut lesen - und wer es nicht kennt, kapiert trotzdem gleich, um was es geht. Nachteile? Ebenfalls ganz klar: Es lässt nur eine einfache Parametrisierung zu und kennt keine Hierarchien - von den Parametergruppen mal abgesehen. Eine .ini Datei könnte wie folgt aussehen:
[Gruppe 1] Parameter 1=123 Parameter 2=Hallo Welt [Gruppe 2] Parameter 3=false Parameter 4=true
Ich Rüpel: Kommentare gibts hier natürlich auch - einfach ein Semikolon an den Zeilenanfang packen.
Die PHP-Serialisierung wäre als nächstes zu nennen. Hiermit werden auf einen Schlag ganze Objekte und Arrays auf die Platte gebannt, um später wieder zum Leben erweckt zu werden. Wenn man komplexe Daten ohne Datenbank abspeichern möchte, ist dieses Format eine prima Wahl - ich übersehe jetzt die Tatsache, das Javascript und Co nichts damit anfangen können. Only for PHP, aber gerade deshalb sehr performant. Ein Beispiel spare ich mit in diesem Fall - kann ja doch niemand lesen.
Schauen wir uns mal XML an. Dieses Format ist vor einigen Jahren ausgezogen, um die Welt zu erobern. Als generelles Format für alles und jeden. Die Regeln, um eine gültige XML-Datei zu erstellen sind in der Tat gering. Man kann es je nach Wunsch anpassen - z.B. neue Felder hinzufügen.
Ein weiterer Vorteil: Die Unterstützung von Hierarchien und Ebenen. Man super bequem Parameter verschachteln und einsortieren. Und wer sich ein wenig in HTML auskennt, kommt auch mit XML prima zurecht. Ab PHP 5 ist ein einfacher XML-Parser standardmäßig an Board - für ältere Version sind Extensions am Start. Einen XML Parser für Javascript gibt es auch - was will man mehr? Aber hier noch ein kleines Beispiel:
<xml> <Gruppe_1> <Parameter_1>123</Parameter_1> <Parameter_2>Hallo Welt</Parameter_2> </Gruppe_1> <Gruppe_2> <Parameter_3>false</Parameter_3> <Parameter_4>true</Parameter_4> </Gruppe_2> </xml>
Kommentare sind wie in HTML über <!– –> möglich, werden aber selten verwendet. Man kann über <![CDATA[ ]]> kann man sogar theoretisch Binärdaten in einer XML-Datei ablegen. Der Nachteil von XML ist der starke Metadaten Overhead - u.A. produziert durch die Tagbezeichnungen, da kann das Parsen einer größeren Datenmenge mit Javascript einen Moment dauern.
Ein fast vergessenes und vor wenigen Monaten wieder entdecktes Feature von Javascript ist das JSON (Die Abkürzung bedeutet “Javascript Objekt Notation“) Format. Man definiert über eine bestimmte Kurzschreibweise eine strukturierte Datenmenge, die dann vom JSON-Interpreter in Objekte umgewandelt werden. Ab Version 5.2 gibt es auch für einen JSON Parser für PHP - so werden Ajax-Anwendungen zum Kinderspiel! Nachfolgend ein Beispiel:
{
"Gruppe 1" : [
{ "Parameter 1" : 123 },
{ "Parameter 2 : "Hallo Welt" }
] ,
"Gruppe 2" : [
{ "Parameter 3" : false },
{ "Parameter 4 : true }
]
}
Kommentare sind bei diesem Format nicht möglich. Mittlerweile gibt es fürs JSON-Format Parser in nahezu jeder Programmiersprache.
Update: Sergej hat einen Artikel von Ajaxian aufgegriffen und über die Performance von XML und JSON im Vergleich geschrieben. Sehr lesenswert!
Seit 2001 gibt es ein neues Pferd im Stall: YAML (Ausgeschrieben: “YAML Ain’t Markup Language”) hat es sich zur Aufgabe gemacht, alle Config-Formate hinter sich zu lassen und ein von Menschen leicht lesbares Format zur Verfügung zu stellen, das ebenso leicht von Computern geparst werden kann. Es soll wie JSON nahezu beliebige Strukturen abbilden können und trotzdem besser lesbar sein? Mal schauen:
Gruppe 1: Parameter 1: 123 Parameter 2: Hallo Welt Gruppe 2: Parameter 3: false Parameter 4: true
Kommentare sind auch möglich - was will man mehr? Achja: Die Parser für PHP und Javascript zum Beispiel :) Beide sind zu einfach einzusetzen, wie die Sprache lesbar ist…
Wer auf dem Stand der Dinge sein möchte, sollte zumindest für Konfiguationszwecke auf YAML umsteigen. Tschüss db_config.php - Hallo db.yml! Für den Datenaustausch mit Javascript sehe ich besser Chancen für JSON - zumal es ohnehin Datenstrukturen ermöglicht.
Übrigens: was Ruby kann, schafft auch PHP :)
Ähnliche Artikel:





