Mein Web-Application-Framework als Interface in Perl implementiert

Das Grundgerüst meines Frameworks ist ein Interface [Perl]

Vom ​HTTP ​Request ​bis ​zur ​Response ​stehen ​die ​Abläufe ​prinzipiell ​fest, ​denn ​was ​in ​der ​Response ​gesendet ​werden ​soll, ​wird ​über ​eine ​Konfiguration ​bestimmt. ​Höchstens ​bei ​interaktiven ​Anwendungen ​ergeben ​sich ​Verzweigungen, ​sei ​es ​nur ​bei ​einer ​fehlerhaften ​Eingabe. ​In ​der ​Regel ​ist ​der ​auszugebende ​Content-Type: ​text/html ​und ​so ​ergibt ​sich, ​nachdem ​eine ​Instanz ​der ​Framework-Subklasse ​erstellt ​wurde, ​stets ​der ​folgende ​Ablauf:

$fw->data(); ​wird ​aufgerufen, ​dass ​ist ​die ​Methode, ​welche ​zur ​Beschaffung ​des ​Body-Template ​zuständig ​ist. ​Im ​Default ​wird ​das ​Template ​aus ​dem ​Bereich ​unterhalb ​des ​__DATA__ ​Token ​geladen ​(Kompaktklasse).

$fw->init(); ​setzt ​bestimmte ​Werte ​fürs ​Template, ​auf ​jeden ​Fall ​Eigenschaften ​in ​die ​FW-Instanz. ​Solche ​Eigenschaften ​können ​z.B. ​ein ​Data-Acccess-Layer ​sein ​oder ​eine ​Verbindung ​zu ​MySQL.

Nun ​kommt ​die ​Verzweigung, ​wo ​festgestellt ​wird, ​ob ​Parameter ​im ​Request ​sind:

if( ​$fw->param ​){
 ​ ​$fw->control;
}
else{
 ​ ​$fw->browse;
}

Die ​Interface ​Methode ​control() ​entspricht ​dem ​Controller ​in ​einem ​MVC ​und ​beinhaltet ​eine ​für ​den ​URL ​spezifisch ​konfigurierte ​Parameter-Kontroll-Struktur. ​Ggf. ​wird ​hier ​ein ​anderes ​Template ​geladen ​oder ​ein ​gänzlich ​anderer ​Content-Type ​in ​den ​Ausgabepuffer ​geschrieben.

$fw->trailer(); ​ist ​die ​letzte ​Interface-Methode, ​die ​in ​einer ​Responseklasse ​definiert ​sein ​kann. ​Damit ​können ​weitere ​Platzhalter ​gesetzt ​werden. ​Manche ​Klassen ​definieren ​nur ​einen ​trailer().

Nun ​sind ​alle ​Datenpuffer ​mit ​Daten ​bestückt, ​die ​Framework-Instanz ​kommt ​zurück ​in ​die ​main-Class ​wo ​die ​Response ​zusammengebaut ​wird. ​Dazu ​werden ​die ​Methoden

$fw->header();
$fw->start_html();
$fw->menu();
$fw->bodybuild();
$fw->end_html();

nacheinander ​aufgerufen. ​Falls ​ein ​von ​text/html ​abweichender ​Content-Type ​ausgegeben ​werden ​soll, ​werden ​anstelle ​dieser ​Methoden ​nur

$fw->header();
$fw->content();

aufgerufen. ​Das ​ist ​beispielsweise ​auch ​bei ​AJAX-Responses ​der ​Fall.


Datenschutzerklärung: Diese Seite dient rein privaten Zwecken. Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. nmq​rstx-18­@yahoo.de