Start · Sprachen · PHP · Referenz · Yaf_Exception_StartupError

Yaf_Exception_StartupError

Klasse

Wird ausgelöst, wenn während des Anwendungsstarts von Yaf ein kritischer Fehler auftritt.

seit PHP 2.0.0 Kategorie: error

Signatur

class Yaf_Exception_StartupError extends Yaf_Exception

Beschreibung

Yaf_Exception_StartupError ist eine spezialisierte Ausnahme des Yet Another Framework (Yaf) und wird geworfen, wenn die Initialisierung der Yaf-Anwendung fehlschlägt. Typische Ursachen sind eine fehlerhafte oder fehlende Konfigurationsdatei, ungültige Konfigurationswerte sowie das Fehlen von Pflichtdirektiven wie application.directory.

Diese Ausnahme erbt von Yaf_Exception, welche wiederum von der eingebauten PHP-Klasse RuntimeException abstammt. Sie kann daher mit einem normalen try/catch-Block abgefangen werden, entweder direkt als Yaf_Exception_StartupError oder allgemeiner als Yaf_Exception bzw. Exception.

Es empfiehlt sich, beim Instanziieren von Yaf_Application stets einen passenden Exception-Handler zu verwenden, um Startzeitfehler sauber zu protokollieren und dem Benutzer eine verständliche Fehlermeldung anzuzeigen, anstatt eine rohe PHP-Fehlermeldung zu präsentieren.

  • Fehlende oder nicht lesbare Konfigurationsdatei
  • Ungültiger Wert für application.directory
  • Fehlende Pflichtschlüssel in der INI- oder PHP-Array-Konfiguration

Beispiele

StartupError beim Fehlen der Konfiguration abfangen

<?php
try {
    // Absichtlich ungültige Konfiguration (application.directory fehlt)
    $app = new Yaf_Application([
        'application' => [
            // 'directory' fehlt bewusst
        ]
    ]);
    $app->run();
} catch (Yaf_Exception_StartupError $e) {
    echo 'Yaf-Startfehler: ' . $e->getMessage() . PHP_EOL;
    echo 'Code: ' . $e->getCode() . PHP_EOL;
} catch (Yaf_Exception $e) {
    echo 'Allgemeiner Yaf-Fehler: ' . $e->getMessage() . PHP_EOL;
}
Yaf-Startfehler: Expects a valid directory, but '/path/to/missing' is not accessible Code: 0

StartupError durch fehlende INI-Datei provozieren

<?php
try {
    // Pfad zu einer nicht vorhandenen INI-Datei
    $app = new Yaf_Application('/var/www/nonexistent/application.ini');
    $app->run();
} catch (Yaf_Exception_StartupError $e) {
    // Fehler sauber loggen
    error_log('[Yaf StartupError] ' . $e->getMessage());
    http_response_code(500);
    echo 'Die Anwendung konnte nicht gestartet werden. Bitte überprüfen Sie die Konfiguration.';
}
Die Anwendung konnte nicht gestartet werden. Bitte überprüfen Sie die Konfiguration.

// Wichtig · Fallstricke

Yaf muss als PECL-Extension installiert sein (pecl install yaf), da es sich nicht um eine PHP-Kernfunktion handelt. Die Klasse steht nur zur Verfügung, wenn die Extension geladen ist.

Ab Yaf 3.x wurden einige Verhaltensweisen bezüglich der geworfenen Ausnahmetypen leicht angepasst. Stellen Sie sicher, dass die verwendete Yaf-Version mit dem PHP-Zweig (7.x oder 8.x) kompatibel ist, da Startfehler in älteren Versionen gelegentlich als fatale Fehler statt als Exceptions gemeldet wurden, wenn yaf.use_namespace oder yaf.throw_exception nicht korrekt gesetzt war.

Setzen Sie in der php.ini den Wert yaf.throw_exception = 1 (Standardwert), damit Yaf-Fehler als Exceptions geworfen werden. Ist dieser Wert auf 0 gesetzt, werden Fehler über den PHP-Fehlermechanismus gemeldet und diese Exception wird nicht geworfen.