Start · Sprachen · PHP · Referenz · Yaf_Exception_LoadFailed

Yaf_Exception_LoadFailed

Klasse

Wird ausgelöst, wenn das Yaf-Framework eine benötigte Klasse nicht laden kann.

seit PHP 2.0.0 Kategorie: misc

Signatur

class Yaf_Exception_LoadFailed extends Yaf_Exception

Beschreibung

Yaf_Exception_LoadFailed ist eine spezialisierte Ausnahme im Yaf-Framework (Yet Another Framework), die geworfen wird, wenn ein automatisches Laden (Autoloading) einer Klasse fehlschlägt. Dies kann passieren, wenn die entsprechende Klassendatei nicht gefunden wird, nicht lesbar ist oder einen Fehler enthält, der das Laden verhindert.

Die Klasse erweitert Yaf_Exception, welche selbst von der SPL-Klasse RuntimeException abstammt. Dadurch lässt sich Yaf_Exception_LoadFailed sowohl gezielt als auch zusammen mit anderen Yaf_Exception-Typen in einem catch-Block abfangen.

Typische Auslöser sind falsch konfigurierte Verzeichnispfade in application.directory, fehlende Dateien im erwarteten Pfad oder Tippfehler im Klassennamen. Das Yaf-Framework folgt einer strikten Namenskonvention: Klassen werden anhand ihres Namens auf Dateipfade gemappt, und jede Abweichung führt zu dieser Ausnahme.

In der Praxis sollte man Yaf_Exception_LoadFailed in einem zentralen Fehlerhandler oder im Bootstrap-Code abfangen, um dem Benutzer eine verständliche Fehlermeldung zu zeigen, anstatt einen unkontrollierten Programmabbruch zu riskieren.

Beispiele

Gezieltes Abfangen eines Ladefehlers

<?php
try {
    // Yaf-Dispatcher wird gestartet; intern wird versucht, Controller-Klassen zu laden
    $app = new Yaf_Application('/path/to/application.ini');
    $app->run();
} catch (Yaf_Exception_LoadFailed $e) {
    // Wird geworfen, wenn z. B. IndexController.php nicht gefunden wurde
    echo 'Klasse konnte nicht geladen werden: ' . $e->getMessage();
} catch (Yaf_Exception $e) {
    echo 'Allgemeiner Yaf-Fehler: ' . $e->getMessage();
}
Klasse konnte nicht geladen werden: Failed opening script /path/to/application/controllers/IndexController.php

Unterklassen von Yaf_Exception_LoadFailed erkennen

<?php
// Yaf kennt mehrere spezialisierte LoadFailed-Unterklassen
// z. B. Yaf_Exception_LoadFailed_Controller, Yaf_Exception_LoadFailed_Action
try {
    $app = new Yaf_Application('/path/to/application.ini');
    $app->run();
} catch (Yaf_Exception_LoadFailed_Controller $e) {
    error_log('[YAF] Controller nicht gefunden: ' . $e->getMessage());
    header('HTTP/1.1 404 Not Found');
    echo '404 – Seite nicht gefunden';
} catch (Yaf_Exception_LoadFailed_Action $e) {
    error_log('[YAF] Action nicht gefunden: ' . $e->getMessage());
    header('HTTP/1.1 404 Not Found');
    echo '404 – Aktion nicht gefunden';
} catch (Yaf_Exception_LoadFailed $e) {
    // Alle anderen LoadFailed-Fehler
    error_log('[YAF] Ladefehler: ' . $e->getMessage());
    echo 'Interner Fehler beim Laden einer Klasse.';
}

// Wichtig · Fallstricke

Unterklassen: Yaf stellt spezialisierte Unterklassen bereit, z. B. Yaf_Exception_LoadFailed_Controller, Yaf_Exception_LoadFailed_Action, Yaf_Exception_LoadFailed_Model und Yaf_Exception_LoadFailed_View. Diese erlauben eine granularere Fehlerbehandlung.

Namenskonventionen: Yaf erwartet, dass Klassennamen exakt dem Dateinamen entsprechen (z. B. IndexControllerIndexController.php). Abweichungen führen immer zu Yaf_Exception_LoadFailed.

Konfiguration: Überprüfen Sie bei solchen Fehlern als erstes die INI-Einstellung application.directory sowie application.library, da falsche Pfade die häufigste Ursache sind.