Mein Web-Application-Framework als Interface in Perl implementiert

Das Grundgerüst meines Frameworks ist ein Interface

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.


Anbieter: nmq​rstx-18­@yahoo.de, die Seite verwendet funktionsbedingt einen Session-Cookie und ist Bestandteil meines nach modernen Aspekten in Perl entwickelten Frameworks.