FrameworkDocs
PHP 8.4+ UIkit 3 FA 6 Pro
Die Config-Klasse ist als Singleton implementiert. Der Konstruktor ist privat – Zugriff erfolgt ausschließlich über Config::getInstance(). Die Konfiguration ist nach dem ersten load()-Aufruf unveränderlich.

Schnellstart

PHP
use App\Config\Config;

// Singleton-Instanz holen und Konfiguration laden
$config = Config::getInstance();
$config->load(__DIR__ . '/../config', 'production');

// Werte lesen
$dbHost = $config->getString('database.host', 'localhost');
$debug  = $config->getBool('app.debug', false);
$port   = $config->getInt('database.port', 3306);

Konfigurationsdateien

Jede PHP-Datei im Config-Verzeichnis muss ein assoziatives Array zurückgeben. Der Dateiname wird automatisch als Schlüssel-Prefix verwendet:

config/database.php
<?php
return [
    'host'     => 'localhost',
    'port'     => 3306,
    'name'     => 'meine_datenbank',
    'user'     => 'db_user',
    'password' => 'geheim',
    'charset'  => 'utf8mb4',
];
// Zugriff: $config->get('database.host')
config/app.php
<?php
return [
    'name'    => 'Meine Anwendung',
    'debug'   => false,
    'url'     => 'https://example.com',
    'locale'  => 'de',
];
// Zugriff: $config->getString('app.name')
config/env/production.php – Umgebungs-Overlay
<?php
// Überschreibt Basis-Konfiguration für Production
return [
    'database' => [
        'host'     => 'prod-db.server.com',
        'password' => getenv('DB_PASSWORD'),
    ],
    'app' => [
        'debug' => false,
    ],
];

Methoden

MethodeRückgabetypBeschreibung
getInstance() static Gibt die Singleton-Instanz zurück (erstellt diese beim ersten Aufruf).
load(string $configDir, ?string $environment) void Lädt alle .php-Dateien aus $configDir. Optional wird ein Umgebungs-Overlay aus env/$environment.php gemergt. Wirft ConfigImmutableException beim zweiten Aufruf.
get(string $key, mixed $default = null) mixed Liest einen Wert per Dot-Notation. Gibt $default zurück wenn der Key fehlt.
getOrFail(string $key) mixed Wie get(), wirft jedoch ConfigKeyNotFoundException wenn der Key fehlt.
getString(string $key, string $default = '') string Typsicherer String-Getter. Wirft ConfigValidationException wenn der Wert kein String ist.
getInt(string $key, int $default = 0) int Typsicherer Integer-Getter.
getBool(string $key, bool $default = false) bool Typsicherer Boolean-Getter.
getArray(string $key, array $default = []) array Typsicherer Array-Getter.
has(string $key) bool Prüft ob ein Key existiert (auch wenn sein Wert null ist).
all() array Gibt die gesamte Konfiguration als Array zurück.
reset() (static) void Setzt die Singleton-Instanz zurück. Nur für Tests verwenden!

Exceptions

ExceptionWann
ConfigImmutableExceptionload() wird ein zweites Mal aufgerufen
ConfigFileNotFoundExceptionConfig-Verzeichnis oder Datei nicht gefunden
ConfigKeyNotFoundExceptiongetOrFail() mit fehlendem Key
ConfigValidationExceptionTypsicherer Getter mit falschem Typ / Path-Traversal

Praxisbeispiele

PHP – Umgang mit fehlenden Keys
$config = Config::getInstance();

// Mit Default-Wert (sicher)
$timeout = $config->getInt('app.timeout', 30);

// Ohne Default (wirft Exception wenn fehlt)
$secret = $config->getOrFail('app.jwt_secret');

// Existenzprüfung
if ($config->has('app.feature_flags.dark_mode')) {
    $darkMode = $config->getBool('app.feature_flags.dark_mode');
}
PHP – In Tests zurücksetzen
// setUp() in PHPUnit
protected function setUp(): void
{
    Config::reset(); // Singleton zurücksetzen
    $config = Config::getInstance();
    $config->load(__DIR__ . '/fixtures/config', 'testing');
}
Config::reset() ist ausschließlich für Unit-Tests gedacht. In der Produktionsumgebung sollte die Konfiguration einmalig geladen und danach nicht mehr verändert werden.