Eigenschaften

Es gibt mehrere Wege Konfigurationen zu speichern. Eine sicherlich einfache Methode und für viele Anwender verständliche Form der Darstellung, sind die von Java bekannten Eigenschaften oder Properties. Eigenschaften sind in diesem Zusammenhang einfache Schlüssel-Wert-Paare die in einer Textdatei gespeichert werden können.

Einleitendes Beispiel

Im folgenden ist eine einfache Datei mit den Schlüsseln key1 und key2 abgebildet. Die einzelnen Zeilen sind durch Zeilentrennzeichen \n voneinander getrennt.

#Das ist ein Dateikommentar.
key1=value
key2:value
#Abschlußkommentar

Aufbau der einzelnen Elemente

Schlüssel/Werte

Schlüssel-Werte können entweder durch einen Doppelpunkt oder ein Gleichheitszeichen getrennt werden. Weder die Schlüssel noch die Werte werden dabei geparsed, also durch den PHP-Interpreter bearbeitet. Leerzeichen am Anfang und am Ende eines Schlüssels werden entfernt. Der Schlüssel key3 im Beispiel wird als [key3] und nicht als [ key3 ] geführt. Wird kein Trennzeichen angegeben, so handelt es sich um einen Wert ohne Schlüssel. In diesem Fall wird die gesamte Zeile als Wert aufgefasst. Der Schlüssel wird in diesem Fall mit dem Wert gleichgesetzt. Auch hier werden Leerzeichen am Anfang und Ende des Schlüssels entfernt.

key1=value
key2:value

Wert ohne Schlüssel

 key3 = test

Soll im Wert eines Schlüssel-Wert-Paares ein Zeilenumbruch eingefügt werden, so muss dies über einen Schrägstrich am Ende der entsprechenden Zeile definiert werden.

# Mehrzeilige Eigenschaft mit \ als Trennzeichen
key4=Das ist die erste\
und das die zweite Zeile

Kommentare

Kommentare können durch ein # oder ein ! eingeleitet werden. Vor dem Prefix dürfen allerdings keine anderen Zeichen und auch keine Leerzeichen stehen.

#Das ist ein Dateikommentar.
#Nach dem Dateikommentar muss eine Leerzeile
! eingefügt werden.

# Das ist ein Kommentar
! das auch
 ! das ist kein Kommentar, sondern ein Wert ohne Schlüssel, da die Zeile mit einem Leerzeichen beginnt.

Ein Beispiel

Im folgendem Beispiel soll die nachfolgende Konfigurationsdatei eingelesen, geändert und wieder abgespeichert werden.

!Dateikommentar
#Das ist auch ein Dateikommentar
#Das sind properties

a = 1
b=1
c=1

#Kommentar
!Hinweis

d=Der Wert des Schlüssels d

#Test ohne Key
Eine schöne Stadt 

A=Das ist ein Schlüssel: mit Zeilenumbruch\
das ist die zweite zeile\
und die dritte
B=Neue Zeile

#Abschluß

Als erstes wird die Eigenschaftsdatei (file.properties), die im gleichen Verzeichnis liegt, eingelesen.

$properties = new Alvine\Types\Properties();
$stream = \Alvine\IO\FileInputStream::fromCurrentFilename('file.properties');
$properties->load($stream);

Im nächsten Schritt soll der Wert des Schlüssels d ausgegeben werden. Dies erfolgt über den Aufruf der Methode Properties::getProperty() wie im folgenden Beispiel zu sehen ist.

/**
 * Ausgabe des Wertes
 */
echo $properties->getProperty('d');

Das Setzen des Wertes ist genauso einfach über die Methode Properties::setProperty(). Das Speichern der Eigenschaft kann bequem über einen Output-Stream erfolgen.

$properties->setProperty('d', 'Neuer Wert');
/**
 * Speichern der Änderung
 */
$stream = \Alvine\IO\FileOutputStream::fromCurrentPath('file.properties');
$properties->save($stream);

Die neue Datei sieht damit folgendermaßen aus (zu beachten ist der Wert hinter dem d=).

!Dateikommentar
#Das ist auch ein Dateikommentar
#Das sind properties

a = 1
b=1
c=1

#Kommentar
!Hinweis

d=Neuer Wert

#Test ohne Key
Eine schöne Stadt 

A=Das ist ein Schlüssel: mit Zeilenumbruch\
das ist die zweite zeile\
und die dritte
B=Neue Zeile

#Abschluß