Warum XML?

Nun ja, einen wirklichen Grund habe ich mal wieder nicht, ich persönlich finde es einfach irgendwie schöner, sieht irgendwie strukturierter aus. Also ist es in diesem Falle eigentlich eher eine persönliche Vorliebe.

Aber vielleicht kann ich durch den Rest des Artikels eventuell meine Vorliebe dazu etwas besser vermitteln.

Aufbau der XML-Config

Einer der Vorteile von XML ist die Tatsache, dass es hier keine festen und vorgeschriebenen Tags gibt. Dadurch hat man die Freiheit, diese zu benennen, wie man es möchte und wie es einem logisch erscheint.

Die Konfiguration wird hier im Beispiel in drei Bereiche unterteilt. General, System und Database.

Der Bereich General enthält alle möglichen Einstellungen, wie Sprache, Zeichensatz, Autor und was einem noch so alles einfallen mag. Unter System kommen dann schon etwas spezifischere Einstellungen rein. Ich denke da an Pfadangaben und so weiter. Database enthält, wie der Name schon sagt, alle Informationen zur Datenbank.

Fangen wir also an:
Als Erstes wird der Bereich General definiert, und der Zeichensatz der Seite, sowie die Sprache und der Autor hinterlegt.

1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8"?>
<general>
    <charset>utf-8</charset>
    <language>de_DE</language>
    <author>Name</author>
</general>

Nun folgt der Bereich System, in dem diverse Pfade definiert sind. Unter anderem die URI der Seite und eines eventuellen CDN. Auch der Pfad auf dem Server wird hier gleich mit eingetratgen. Dieser kann von Nutzen sein, wenn Frameworks wie ZEND oder Template-Enginges wie Smarty verwendet werden.

1
2
3
4
5
6
7
8
<system>
    <uri>http://deineseite.de/</uri>
    <cdn>http://cdn.deineseite.de/</cdn>
    <img>images/</img>
    <css>css/</css>
    <js>javascript/</js>
    <path>/var/www/localhost/htdocs/deineseite-de/</path>
</system>

Im dritten Abschnitt, Database, folgen nun die Datenbankeinstellungen. Diese sind die üblichen Verdächtigen wie Host, Nutzer, Datenbankname und Passwort.

1
2
3
4
5
6
<database>
    <host>localhost</host>
    <name>DB Name</name>
    <user>user</user>
    <password>password</password>
</database>

Damit wäre das XML zur Konfiguration erstellt. Hier sieht man bereits, das eine gewisse Struktur in der Datei vorhanden ist, und sich somit alles recht schnell finden lässt. Natürlich kann diese Datei beliebig erweitert werden.

XML auslesen

Nun muss das XML nur ausgelesen werden, damit die Daten im Webprojekt verwendet werden können, Dazu bedient man sich einer kleinen PHP-Funktion.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function get_config($array_ObjData, $array_SkipIndices = array()) {
    $array_Data = array();

    // if input is object, convert into array
    if(is_object($array_ObjData)) {
        $array_ObjData = get_object_vars($array_ObjData);
    }

    if(is_array($array_ObjData)) {
        foreach($array_ObjData as $index => $value) {
            if(is_object($value) || is_array($value)) {
                $value = get_config($value, $array_SkipIndices); // recursive call
            }

            if(in_array($index, $array_SkipIndices)) {
                continue;
            }

            $array_Data[$index] = $value;
        }
    }

    return $array_Data;
}

$var_xmlUrl = 'config.xml';                         // XML file
$var_xmlStr = file_get_contents($var_xmlUrl);       // Daten aus XML auslesen
$obj_xmlObj = simplexml_load_string($var_xmlStr);   // Daten in Objekt umwandeln

$array_Config = get_config($obj_xmlObj);            // Konfiguration in Array speichern

Damit sind nun alle Daten aus der Konfigurationsdatei in einem PHP-Array verfügbar und können abgerufen werden. So sind zum Beispiel die Datenbankinformationen unter $array_Config[‚database‘] zu finden.

Vielleicht kann es ja der eine oder andere gebrauchen, also, in diesem Sinne
Viel Spass damit und viel Erfolg bei euren Projekten :-)

Artikel / Seite weiterempfehlen

Schreibe einen Kommentar

Ihre Email-Adresse wird nicht veröffentlicht. Pflichtfelder sind durch * markiert.

Sie können folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>