Start · Sprachen · PHP · Referenz · Yaf_Config_Ini

Yaf_Config_Ini

Klasse

Lädt Konfigurationsdaten aus einer INI-Datei und stellt sie als objektorientierte, verschachtelte Konfigurationsstruktur bereit.

seit PHP 2.0.0 Kategorie: misc

Signatur

class Yaf_Config_Ini extends Yaf_Config_Abstract implements Iterator, ArrayAccess, Countable

Beschreibung

Yaf_Config_Ini ist Teil des Yaf-Frameworks (Yet Another Framework) und ermöglicht das Einlesen von Konfigurationsdaten aus klassischen INI-Dateien. Die Klasse nutzt intern die PHP-Funktion parse_ini_file(), erweitert diese jedoch um Unterstützung für verschachtelte Abschnitte (Sections) und hierarchische Schlüssel mittels Punkt-Notation (z. B. database.host).

Eine besondere Stärke von Yaf_Config_Ini ist die Vererbung von Sektionen: Mit der Syntax [production : common] kann eine Sektion alle Werte einer anderen Sektion erben und einzelne Werte überschreiben. Dies ermöglicht eine saubere Trennung zwischen Entwicklungs-, Test- und Produktivumgebungen ohne redundante Konfigurationsangaben.

Da die Klasse Iterator, ArrayAccess und Countable implementiert, kann auf die geladene Konfiguration sowohl über Objekt-Eigenschaften ($config->database->host) als auch über Array-Syntax ($config['database']['host']) zugegriffen werden. Außerdem ist sie mit foreach iterierbar.

Die Klasse eignet sich besonders für Yaf-basierte Anwendungen, bei denen die Konfiguration zentral in einer INI-Datei verwaltet wird, kann aber grundsätzlich auch unabhängig vom restlichen Yaf-Framework eingesetzt werden, sofern die Yaf-Extension installiert ist.

Parameter

Name Typ Default Beschreibung
$config_file Pflicht string Pfad zur INI-Datei, die geladen werden soll. Die Datei muss lesbar und gültig formatiert sein.
$section string Name der INI-Sektion, die geladen werden soll. Wird dieser Parameter angegeben, werden nur die Werte der angegebenen Sektion (inklusive geerbter Werte) geladen. Bleibt er leer, werden alle Sektionen als verschachtelte Struktur eingelesen.

Rückgabewert

Typ

Beispiele

Einfache INI-Datei laden und Werte auslesen

<?php
// config.ini:
// [common]
// database.host = localhost
// database.port = 3306
// database.name = mydb
// app.debug = false
//
// [development : common]
// database.host = 127.0.0.1
// app.debug = true

// Nur die Sektion 'development' laden (erbt von 'common')
$config = new Yaf_Config_Ini('/pfad/zu/config.ini', 'development');

echo $config->database->host; // 127.0.0.1 (überschrieben)
echo $config->database->port; // 3306 (geerbt von common)
echo $config->app->debug;     // true (überschrieben)
127.0.0.1 3306 true

Alle Sektionen laden und über Array-Syntax zugreifen

<?php
// config.ini:
// [database]
// host = db.example.com
// user = root
// pass = secret
//
// [cache]
// driver = redis
// ttl = 3600

$config = new Yaf_Config_Ini('/pfad/zu/config.ini');

// Array-Zugriff auf verschachtelte Werte
echo $config['database']['host']; // db.example.com
echo $config['cache']['driver'];  // redis

// Iteration über alle Sektionen
foreach ($config as $sectionName => $sectionData) {
    echo "Sektion: $sectionName\n";
    foreach ($sectionData as $key => $value) {
        echo "  $key = $value\n";
    }
}
db.example.com redis Sektion: database host = db.example.com user = root pass = secret Sektion: cache driver = redis ttl = 3600

Sektionsvererbung für Umgebungen

<?php
// config.ini:
// [base]
// app.name = MeineApp
// app.version = 1.0
// log.level = error
//
// [staging : base]
// log.level = warning
//
// [production : base]
// app.name = MeineApp Prod
// log.level = error

$env = 'staging'; // z. B. aus Umgebungsvariable bestimmen
$config = new Yaf_Config_Ini('/pfad/zu/config.ini', $env);

echo $config->app->name;    // MeineApp (geerbt)
echo $config->app->version; // 1.0 (geerbt)
echo $config->log->level;   // warning (überschrieben)
MeineApp 1.0 warning

// Wichtig · Fallstricke

Abhängigkeit: Yaf_Config_Ini erfordert die Installation der Yaf PECL-Extension. Sie ist kein Bestandteil des PHP-Kerns und muss über PECL oder den Paketmanager des Betriebssystems installiert werden.

Sicherheitshinweis: INI-Dateien mit sensiblen Daten (Datenbankpasswörter, API-Schlüssel etc.) sollten niemals im öffentlich erreichbaren Web-Verzeichnis abgelegt werden. Stellen Sie sicher, dass der Webserver keinen direkten Zugriff auf Konfigurationsdateien gewähren kann (z. B. über .htaccess-Regeln oder Ablage außerhalb des Document-Root).

Punkt-Notation: Schlüssel mit Punkten in der INI-Datei (z. B. database.host) werden automatisch als verschachtelte Objekte interpretiert. Ein Schlüssel wie a.b.c = value ist als $config->a->b->c abrufbar.

Schreibschutz: Standardmäßig ist die geladene Konfiguration schreibgeschützt (readonly). Um Werte zur Laufzeit zu ändern, muss beim Konstruktor-Aufruf ein dritter Parameter gesetzt oder die entsprechende Methode der Basisklasse genutzt werden — dies hängt von der jeweiligen Yaf-Version ab.