Start · Sprachen · PHP · Referenz · Yaf_Exception_LoadFailed_Controller

Yaf_Exception_LoadFailed_Controller

Klasse

Wird ausgelöst, wenn das Yaf-Framework einen Controller nicht laden kann.

seit PHP 2.0.0 Kategorie: misc

Signatur

class Yaf_Exception_LoadFailed_Controller extends Yaf_Exception_LoadFailed

Beschreibung

Yaf_Exception_LoadFailed_Controller ist eine spezialisierte Ausnahme innerhalb der Yaf-Ausnahmehierarchie. Sie wird vom Yaf-Framework automatisch geworfen, wenn ein angeforderter Controller nicht gefunden oder nicht geladen werden kann – beispielsweise weil die entsprechende Controller-Datei im Anwendungsverzeichnis fehlt oder der Klassenname nicht korrekt definiert ist.

Die Klasse erbt von Yaf_Exception_LoadFailed, die wiederum von Yaf_Exception abstammt, welche selbst RuntimeException erweitert. Damit lässt sich diese Ausnahme sowohl gezielt als auch allgemein (über Elternklassen) abfangen.

Typische Ursachen für diese Ausnahme sind: fehlende Controller-Dateien im Verzeichnis application/controllers/, falsch geschriebene Controller-Klassen (z. B. fehlendes Controller-Suffix), oder eine fehlerhafte Namensraumkonfiguration innerhalb der Yaf-Anwendung.

Es empfiehlt sich, diese Ausnahme in der Bootstrap-Klasse oder einem zentralen Fehler-Handler abzufangen, um dem Benutzer eine aussagekräftige Fehlermeldung anstelle eines unkontrollierten Absturzes zu liefern.

Beispiele

Gezieltes Abfangen eines fehlenden Controllers

<?php
class Bootstrap extends Yaf_Bootstrap_Abstract {
    public function _initRoute(Yaf_Dispatcher $dispatcher) {
        // Routen-Konfiguration
    }
}

// In der index.php oder einem zentralen Dispatcher-Wrapper:
try {
    $app = new Yaf_Application('/path/to/application.ini');
    $app->bootstrap()->run();
} catch (Yaf_Exception_LoadFailed_Controller $e) {
    // Spezifisch: Controller konnte nicht geladen werden
    error_log('Controller nicht gefunden: ' . $e->getMessage());
    header('HTTP/1.1 404 Not Found');
    echo '404 – Die angeforderte Seite existiert nicht.';
} catch (Yaf_Exception $e) {
    // Allgemeiner Yaf-Fehler
    error_log('Yaf-Fehler: ' . $e->getMessage());
    header('HTTP/1.1 500 Internal Server Error');
    echo '500 – Interner Serverfehler.';
}

Prüfung der Ausnahmenhierarchie

<?php
// Ausnahme manuell erzeugen und Hierarchie prüfen
$e = new Yaf_Exception_LoadFailed_Controller('IndexController konnte nicht geladen werden.');

var_dump($e instanceof Yaf_Exception_LoadFailed_Controller); // bool(true)
var_dump($e instanceof Yaf_Exception_LoadFailed);            // bool(true)
var_dump($e instanceof Yaf_Exception);                       // bool(true)
var_dump($e instanceof RuntimeException);                    // bool(true)

echo $e->getMessage();
bool(true) bool(true) bool(true) bool(true) IndexController konnte nicht geladen werden.

// Wichtig · Fallstricke

Häufige Ursachen: Stellen Sie sicher, dass der Controller-Klassenname exakt dem Dateinamen entspricht und das Suffix Controller trägt (z. B. IndexController in der Datei IndexController.php). Yaf unterscheidet standardmäßig zwischen Groß- und Kleinschreibung, abhängig vom Betriebssystem.

Konfiguration: Über die INI-Option application.dispatcher.throwException lässt sich steuern, ob Yaf Ausnahmen wirft oder intern behandelt. Ist diese Option deaktiviert, wird stattdessen eine interne Fehlerbehandlung ausgelöst.