Start · Sprachen · PHP · Referenz · Yaf_Exception_LoadFailed_Module

Yaf_Exception_LoadFailed_Module

Klasse

Wird geworfen, wenn das Yaf-Framework ein angefordertes Modul nicht laden kann.

seit PHP 2.0.0 Kategorie: misc

Signatur

class Yaf_Exception_LoadFailed_Module extends Yaf_Exception_LoadFailed

Beschreibung

Yaf_Exception_LoadFailed_Module ist eine spezialisierte Ausnahme des Yet Another Framework (Yaf), die ausgelöst wird, wenn ein angefordertes Modul innerhalb der Yaf-Anwendung nicht gefunden oder geladen werden kann. Sie erbt von Yaf_Exception_LoadFailed und damit letztlich von Yaf_Exception, die ihrerseits von der eingebauten PHP-Klasse Exception erbt.

In Yaf ist ein Modul eine logische Gruppierung von Controllern und Ressourcen – typischerweise ein Unterverzeichnis unterhalb des modules-Ordners der Anwendung. Kann Yaf das angegebene Modul nicht finden (z. B. weil das Verzeichnis fehlt oder der Modulname falsch geschrieben ist), wird diese Ausnahme ausgelöst.

Diese Ausnahme sollte in eigenen Fehlerbehandlungsroutinen (try/catch) oder im zentralen Yaf-Fehler-Handler abgefangen werden, um dem Benutzer eine sinnvolle Fehlermeldung anzuzeigen, anstatt einen unbehandelten Fehler zu präsentieren.

  • Prüfe den Modulnamen auf korrekte Schreibweise (Groß-/Kleinschreibung beachten).
  • Stelle sicher, dass das Modul-Verzeichnis unter application/modules/ korrekt angelegt ist.
  • Überprüfe die Konfiguration (application.modules in der application.ini), ob das Modul dort registriert ist.

Beispiele

Modul-Ladefehler abfangen

<?php
// Bootstrap oder Front-Controller-Setup
$app = new Yaf_Application('/pfad/zur/conf/application.ini');

try {
    $app->run();
} catch (Yaf_Exception_LoadFailed_Module $e) {
    // Modulname konnte nicht aufgelöst werden
    echo 'Modul konnte nicht geladen werden: ' . $e->getMessage();
} catch (Yaf_Exception $e) {
    echo 'Allgemeiner Yaf-Fehler: ' . $e->getMessage();
}
Modul konnte nicht geladen werden: Cannot find module Index's dir

Hierarchisches Abfangen von Yaf-Ladefehlern

<?php
// Gezieltes Unterscheiden verschiedener LoadFailed-Ausnahmen
try {
    $app = new Yaf_Application('/pfad/zur/conf/application.ini');
    $app->run();
} catch (Yaf_Exception_LoadFailed_Module $e) {
    // Nur Modulfehler
    error_log('[YAF] Modul nicht gefunden: ' . $e->getMessage());
    header('HTTP/1.1 404 Not Found');
    echo '404 – Das angeforderte Modul existiert nicht.';
} catch (Yaf_Exception_LoadFailed_Controller $e) {
    // Nur Controller-Fehler
    error_log('[YAF] Controller nicht gefunden: ' . $e->getMessage());
    header('HTTP/1.1 404 Not Found');
    echo '404 – Der angeforderte Controller existiert nicht.';
} catch (Yaf_Exception $e) {
    error_log('[YAF] Unbekannter Fehler: ' . $e->getMessage());
    echo 'Ein interner Fehler ist aufgetreten.';
}

// Wichtig · Fallstricke

Konfiguration: Damit Yaf Module korrekt erkennt, müssen sie in der application.ini unter dem Schlüssel application.modules als kommagetrennte Liste eingetragen sein, z. B. application.modules = Index,Admin,Api. Fehlt dieser Eintrag, behandelt Yaf nur das Standardmodul Index.

Groß-/Kleinschreibung: Yaf unterscheidet je nach Betriebssystem zwischen Groß- und Kleinschreibung der Verzeichnisnamen. Unter Linux muss das Verzeichnis exakt dem Modulnamen entsprechen (z. B. modules/Admin für das Modul Admin).

Vererbungskette: Yaf_Exception_LoadFailed_ModuleYaf_Exception_LoadFailedYaf_ExceptionException. Ein catch (Yaf_Exception_LoadFailed $e)-Block fängt diese Ausnahme ebenfalls ab.