Signatur
Beschreibung
Yaf_Config_Simple ist eine konkrete Implementierung von Yaf_Config_Abstract im Yet Another Framework (Yaf). Sie dient dazu, ein gewöhnliches PHP-Array als Konfigurationsobjekt zu verwalten, das dann per Objekt-Eigenschaftszugriff, Array-Zugriff oder Iterator-Interface gelesen werden kann.
Im Gegensatz zu Yaf_Config_Ini, die Konfigurationsdaten aus einer INI-Datei lädt, erwartet Yaf_Config_Simple die Konfigurationsdaten direkt als PHP-Array im Konstruktor. Das macht sie besonders nützlich für Tests, für dynamisch erzeugte Konfigurationen oder wenn man Konfigurationswerte aus einer Datenbank oder einer anderen Quelle laden und als strukturiertes Objekt bereitstellen möchte.
Der zweite Parameter readonly steuert, ob die Konfiguration nach der Initialisierung verändert werden darf. Ist dieser auf true gesetzt, löst jeder Schreibzugriff eine Ausnahme aus, was die Unveränderlichkeit der Konfiguration zur Laufzeit sicherstellt.
Da die Klasse Iterator, ArrayAccess und Countable implementiert, kann sie direkt in foreach-Schleifen verwendet, per $config['key'] zugegriffen und mit count() gezählt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $config Pflicht | array | Ein assoziatives PHP-Array mit den Konfigurationsdaten. Verschachtelte Arrays werden automatisch als weitere Yaf_Config_Simple-Instanzen gekapselt. |
|
| $readonly | bool | false | Gibt an, ob die Konfiguration schreibgeschützt ist. Bei true werden Änderungen an den Konfigurationswerten zur Laufzeit verhindert. |
Beispiele
Einfache Konfiguration lesen
<?php
$data = [
'database' => [
'host' => 'localhost',
'port' => 3306,
'name' => 'mydb',
],
'debug' => true,
];
$config = new Yaf_Config_Simple($data);
// Eigenschaftszugriff
echo $config->debug; // true
echo $config->database->host; // localhost
echo $config->database->port; // 3306
// Array-Zugriff
echo $config['database']['name']; // mydb
Schreibgeschützte Konfiguration und Iteration
<?php
$data = [
'app_name' => 'MeineApp',
'version' => '1.0.0',
'env' => 'production',
];
// Schreibgeschützt initialisieren
$config = new Yaf_Config_Simple($data, true);
// Über alle Schlüssel iterieren
foreach ($config as $key => $value) {
echo $key . ': ' . $value . PHP_EOL;
}
// Anzahl der Konfigurationswerte
echo 'Anzahl: ' . count($config) . PHP_EOL;
// Versuch, einen Wert zu ändern (wirft Ausnahme bei readonly=true)
try {
$config->env = 'development';
} catch (Yaf_Exception $e) {
echo 'Fehler: ' . $e->getMessage() . PHP_EOL;
}
Konfiguration aus Datenbankwerten aufbauen
<?php
// Simulierte Daten aus der Datenbank
$rowsFromDb = [
'smtp_host' => 'mail.example.com',
'smtp_port' => 587,
'smtp_user' => 'noreply@example.com',
'smtp_password' => 'geheim',
];
$mailConfig = new Yaf_Config_Simple($rowsFromDb);
// Konfiguration an Mailer-Klasse übergeben
function createMailer(Yaf_Config_Simple $cfg): array {
return [
'host' => $cfg->smtp_host,
'port' => $cfg->smtp_port,
'auth' => [$cfg->smtp_user, $cfg->smtp_password],
];
}
$mailerParams = createMailer($mailConfig);
var_dump($mailerParams['host']);
// Wichtig · Fallstricke
Yaf muss installiert sein: Yaf_Config_Simple ist Teil der PECL-Erweiterung yaf und steht nicht in einer Standard-PHP-Installation zur Verfügung. Die Erweiterung muss über PECL oder als Systempaketverfügbar sein.
Verschachtelte Arrays: Mehrdimensionale Arrays werden rekursiv in Yaf_Config_Simple-Objekte umgewandelt. Das Verhalten kann bei tiefer Verschachtelung Auswirkungen auf die Lesbarkeit und Debugging haben.
Readonly-Modus: Beim Einsatz in Produktionsumgebungen empfiehlt sich readonly = true, um unbeabsichtigte Änderungen an der Konfiguration zur Laufzeit zu verhindern.