pinifile Readme
Version: 1.2
copyright © 2005 Andreas Droesch
Index
- Was ist pinifile?
- Wie ist eine Ini Datei aufgebaut?
- Funktionsübersicht
- LoadFromFile($filename)
- SaveToFile($filename)
- UpdateFile()
- ReadValue($section, $keyname, $default)
- WriteValue($section, $keyname, $value)
- ReadBool($section, $keyname, $default)
- WriteBool($section, $keyname, $value)
- ReadSections()
- ReadSection($section)
- ReadSectionValues($section)
- EraseSection($section)
- DeleteKey($section, $keyname)
- SectionExists($section)
- ValueExists($section, $keyname)
- Lizenz
- History
Was ist pinifile? [Index]
"pinifile" ist eine PHP Klasse, welche den Umgang mit Ini Dateien erleichtert. Ini Dateien sind normale Textdateien mit einer Struktur, was das Speichern verschiedener Daten leichter macht, als bei einer normalen Textdatei. Bei den Funktionen habe ich mich an der Delphiklasse TIniFile orientiert, wer also mit dieser schon gearbeitet hat, sollte sich schnell mit den Funktionen zurecht finden. Aber alle anderen natürlich auch.
Wie ist eine Ini Datei aufgebaut? [Index]
Hierzu mal ein Beispiel einer Ini Datei:
[section1]
key1=wert1
key2=wert2
[section2]
key1=wert1
Die Ini Datei besteht aus einzelnen Sektionen, welchen ein Name zugeordnet wird (im Beispiel "section1" und "sektion2"). Unter jeder Sektion können sogenannte Schlüssel gespeichert werden, denen jeweils ein Wert zugeordnet wird (im Beispiel hat der Schlüssel "key1" den Wert "wert1" usw.). Für ein kleines Adressbuch könnte die Ini Datei wie folgt aussehen:
[main]
count=2
[entry1]
name=Max Muster
adress=Musterstraße 3
[entry2]
name=Hans Peter
adress=Mohnweg 8
In "count" wird die Anzahl der Einträge gespeichert um diese später mit einer For-Schleife auslesen zu können. Es wäre auch möglich eine while-Schleife zu nehmen und die Einträge nach jedem Auslesen um eins zu erhöhen, bis kein passender Eintrag mehr existiert. Welche Lösung die bessere ist, kann jeder selber entscheiden.
Funktionsübersicht [Index]
Um die Klasse "IniFile" nutzen zu können, müssen Sie die Datei "pinifile.php" in Ihr Script einbinden, bspw. so:
<?php
//Datei einbinden
include('pinifile.php');
//jetzt kann die Klasse "IniFile" genutzt werden
?>
Vor der Benutzung der Ini Datei muss eine Instanz der Klasse "IniFile" erzeugt werden, dies geht auf zwei Wege:
<?php
//Möglichkeit 1:
$myini = new IniFile();
//Möglichkeit 2:
$myini = new IniFile('meine_datei.ini');
?>
Bei der ersten Möglichkeit wird eine Instanz der Klasse erzeugt mit welcher dann gearbeitet werden kann. Die zweite Möglichkeit läd zusätzlich noch die Daten der angegebenen Ini Datei in die Klasse (dies kann auch nachträglich noch mit der Funktion "LoadFromFile" gemacht werden).
LoadFromFile($filename) [Index]
Diese Funktion läd die Daten der angegebenen Ini Datei in die Klasse. Dabei gehen eventuell noch vorhandenen Daten in der Klasse verloren. Beispiel:
<?php
//Datei "meine_datei.ini" einlesen
$myini->LoadFromFile('meine_datei.ini');
?>
SaveToFile($filename) [Index]
Diese Funktion speichert die Daten der Klasse in eine Ini Datei. Falls die Datei nicht existiert, wird sie angelegt, sonst überschrieben. Achten Sie darauf, dass das PHP Script die nötigen Rechte zum Schreiben auf die Datei / den Ordner hat. Falls eine Datei mit "LoadFromFile, oder beim Erzeugen der Klasse geladen wurde, so kann auch die Funktion "UpdateFile" genutzt werden, um die Daten in die geladenen Datei zu speichern. Beispiel:
<?php
//Daten in Datei "meine_datei.ini" speichern
$myini->SaveToFile('meine_datei.ini');
?>
UpdateFile() [Index]
Diese Funktion kann genutzt werden um Änderungen der Daten in die gleiche Datei zu schreiben, die vorher mit "LoadFromFile", oder beim Erzeugen der Klasse geladen wurde. Um die Daten in eine andere Datei zu speichern, oder vorher keine Datei geladen wurde, müssen Sie die Funktion "SaceToFile" nehmen. Beispiel:
<?php
//Daten in die Datei speichern, welche zuvor geladen wurde
$myini->Update();
?>
ReadValue($section, $keyname, $default) [Index]
Diese Funktion liest den Wert des angegebenen Schlüssels in der angegebenen Sektion. Wurde die Sektion, oder der Schlüssel nicht gefunden, so wird der angegebene Defaultwert zurückgegeben. Für Boolean Werte kann auch die Funktion "ReadBool" genutzt werden, welche die Werte automatisch umwandelt. Beispiel:
Aufbau der Ini Datei:
[section1]
key1=wert1
<?php
//Den Wert von "key1" aus "section1" ausgeben (im Beispiel wäre das "wert1")
echo $myini->ReadValue('section1', 'key1', 'keine Daten');
?>
WriteValue($section, $keyname, $value) [Index]
Diese Funktion speichert einen Wert zu dem angegebenen Schlüssel in der angegebenen Sektion. Existiert die Sektion, oder der Schlüssel nicht, so wird dieser angelegt, sonst überschrieben. Zum Speichern von Boolean Werten kann auch die Funktion "WriteBool" genutzt werden, welche die Werte automatisch umwandelt. Beispiel:
Aufbau der Ini Datei nach dem Speichern:
[section1]
key1=wert1
<?php
//Den Wert "wert1" in "key1" unter "section1" speichern
$myini->WriteValue('section1', 'key1', 'wert1');
?>
ReadBool($section, $keyname, $default) [Index]
Diese Funktion gleicht der Funktion "ReadValue", ist jedoch für Boolean Werte gedacht, welche in der Ini Datei als Zahlen 1 (True) und 0 (False) gespeichert werden. Im Parameter $default wird ein Boolean Wert erwartet und die Funktion liefert einen zurück.
WriteBool($section, $keyname, $value) [Index]
Diese Funktion gleicht der Funktion "WriteValue", ist jedoch für Boolean Werte gedacht, welche in der Ini Datei als Zahlen 1 (True) und 0 (False) gespeichert werden. Im Parameter $value wird ein Boolean Wert erwartet.
[Index]
Diese Funktion liest alle Sektionen in der Ini Datei aus und liefert Sie in einem Array zurück. Beispiel:
Aufbau der Ini Datei:
[section1]
key1=wert1
[section2]
key1=wert1
<?php
//Alle Sektionen auslesen
$sections = $myini->ReadSections();
//Anzahl der Sektionen ausgeben (im Beispiel wäre das "2", da ['section1', 'section2'] im Array)
echo count($sections);
?>
ReadSection($section) [Index]
Diese Funktion liest alle Schlüssel der angegebenen Sektion aus und liefert Sie in einem Array zurück. Um alle Werte auszulesen können Sie die Funktion "ReadSectionValues" nutzen. Beispiel:
Aufbau der Ini Datei:
[section1]
key1=wert1
key2=wert2
<?php
//Alle Schlüssel von "section1" auslesen
$keys = $myini->ReadSection('section1');
//Anzahl der Elemente ausgeben (im Beispiel wäre das "2", da ['key1', 'key2'] im Array)
echo count($keys);
?>
ReadSectionValues($section) [Index]
Diese Funktion liest alle Werte der angegebenen Sektion aus und liefert Sie in einem Array zurück. Um alle Schlüssel auszulesen können Sie die Funktion "ReadSection" nutzen. Beispiel:
Aufbau der Ini Datei:
[section1]
key1=wert1
key2=wert2
<?php
//Alle Werte von "section1" auslesen
$values = $myini->ReadSectionValues('section1');
//Anzahl der Elemente ausgeben (im Beispiel wäre das "2", da ['wert1', 'wert2'] im Array)
echo count($values);
?>
EraseSection($section) [Index]
Diese Funktion löscht die angegebene Sektion mit allen Schlüsseln und Werten. Beispiel:
Aufbau der Ini Datei:
[section1]
key1=wert1
<?php
//"section1" entfernen, die Ini Datei wäre dann leer
$myini->EraseSection('section1');
?>
DeleteKey($section, $keyname) [Index]
Diese Funktion löscht den angegebenen Schlüssel mit seinem Wert in der angegebenen Sektion. Beispiel:
Aufbau der Ini Datei:
[section1]
key1=wert1
<?php
//"key1" entfernen, die Ini Datei würde dann eine leere Sektion enthalten
$myini->DeleteKey('section1', 'key1');
?>
SectionExists($section) [Index]
Diese Funktion gibt True zurück, wenn die angegebene Sektion existiert, sonst False. Beispiel:
Aufbau der Ini Datei:
[section1]
key1=wert1
<?php
//Meldung ausgeben, wenn "sektion1" vorhanden ist (im Beispiel wird der Text ausgegeben)
if ($myini->SectionExists('section1')) {
echo 'Sektion ist vorhanden';
}
?>
ValueExists($section, $keyname) [Index]
Diese Funktion gibt True zurück, wenn der angegebene Schlüssel in der angegebenen Sektion existiert, Ssonst False. Beispiel:
Aufbau der Ini Datei:
[section1]
key1=wert1
<?php
//Meldung ausgeben, wenn "key1" vorhanden ist (im Beispiel wird der Text ausgegeben)
if ($myini->ValueExists('section1', 'key1')) {
echo 'Key ist in Sektion vorhanden';
}
?>
Lizenz [Index]
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Komplette LGPL Lizenz online ansehen!
History [Index]
- Version 1.2:
- überflüssige Whitespaces nicht mit auslesen
- Version 1.1:
- beim Speichern wurde ein Zeilenumbruch zwischen den Werten vergessen