![]() |
9000e.com - Agentur für Neue Medien - Webdesign aus Berlin, Webdesign-Agentur, e-Business und e-Commerce, Content Management Systeme Web-Design Web-Hosting. Internetauftritt Online-Shop Online-Marketing CMS, Webdesign Agentur HomepageerstellungWebdesign Berlin 9000e.com aus Berlin Friedrichshain web design Berlin AgenturWebdesign Berlin - 9000e.com - Agentur für Neue Medien Internet-AgenturTAE (Telefonanschlusseinheit) Tag Taktfrequenz TAN (Transaktionsnummer) TAPI (Telephony Application Programming Interface) TCO '92 TCO '95 TCO '99 TCP (Transmission Control Protocol) TCP/IP TDDSG (Teledienstedatenschutzgesetz) TDG (Teledienstgesetz) Telearbeit Telecomputing Telefonie-Dienst Telekommunikation Telenet Teleshopping Teletext Telnet Terminal Terminal-Emulation Text2Speech Textur TFT-Display Thread Thumbnail Ticker TIFF (Tagged Image File Format) Timeout TN3270 Token Token Ring Tonwertkurve Toplevel-Domain Topologie Toter Link (Dead Link) Touchpad Touch-Screen Tracing Traceroute Traffic Transit Network Transparenz Transfervolumen Tread Trojanisches Pferd Troubleshooting True Color TrueType Trumpet Trust Center TTL (Time to live) TTY TeleTYpe (Fernschreiber) Tunneling TWAIN TWAIN-Treiber Twisted Pair Anwendung und Layout trennen Während nun das Rahmenlayout vom eigentlichen Inhalt getrennt ist, bleibt die Aufgabe, Applikationsfunktionen und Layout zu separieren. Dazu bietet Embperl::Object die Möglichkeit, eine Datei zu definieren, die die eigentliche Anwendung enthält. Für die Embperl-Website heißt sie epwebapp.pl, festgelegt ist der Name in httpd.conf. Wie er nahe legt, handelt es sich hier um reinen Perlcode, in dem Markup nichts zu suchen hat. Nachdem Embperl::Object die Basisvorlage gesucht hat, forscht es auf demselben Pfad nach der Applikationsdatei und lädt sie. Dabei weist es jeder geladenen Datei ein eigenes Package zu und erzeugt eine Hashreferenz, die in dieses Package geblesst ist. Über die Referenz ist der Code innerhalb der Applikationsdatei als Objekt anzusprechen. Da Embperl das package-Statement automatisch einfügt, sollte man es sich in der Datei sparen. Außerdem setzt die Software das @ISA-Array, sodass das Applikationsobjekt von Embperls eigenem Applikationsobjekt abgeleitet ist. Dies ermöglicht den einfachen Zugriff auf die Methoden des übergeordneten Objekts (zum Beispiel Sessionhandling). Nach dem Laden ruft Embperl die Methode init auf. Diese erhält als ersten Parameter die Objektreferenz für das Applikationsobjekt und als zweiten Embperls Request-Objekt. Vor dem Aufruf von init sind bereits alle Informationen für den aktuellen Request aufbereitet. So sind per GET oder POST übergebene Formulardaten verfügbar, das Sessionhandling ist initialisiert und die Sessiondaten sind ebenso zugänglich wie andere Parameter des Requests. Die meisten dieser Parameter sind über die Methoden des Request-Objekts zugänglich. Sie lädt zunächst die Datei config.pl, die neben einigen allgemeinen Konfigurationsdaten vor allem die Definition der Navigation enthält, die auf der linken Seite erscheinen soll. Der Parameter object im Execute-Aufruf gibt an, dass die Datei nicht ausgeführt, sondern wie beim Laden der Applikationsdatei ein Objekt erzeugt werden soll. Dieses liefert Execute als Rückgabewert. Anschließend initialisiert new() das neu erzeugte Objekt, und get_menu() liefert die Menüstruktur. Wie config.pl die Menüstruktur letztendlich definiert, spielt keine Rolle. Im Fall der Embperl-Website geschieht dies als Perl-Datenstruktur, man könnte aber ebenso gut eine XML-Datei verwenden. Wesentlich ist nur, dass eine definierte Schnittstelle existiert. Objektreferenz und Menüstruktur werden für die weitere Verarbeitung im Request-Objekt abgelegt. Es ist ebenso wie das Applikationsobjekt eine Hashreferenz. Den Hash selbst nutzt Embperl nicht, deshalb kann ihn die Applikation frei belegen. Da das Request-Objekt nur während des Requests existiert, räumt Perl an seinem Ende alle Daten wieder auf. fill_menu() fügt der Menüstruktur weitere für die Anzeige benötigte Daten hinzu. Getreu dem Motto von Trennung von Code und Layout, braucht menuleft.epl die fertig aufbereitete Navigation nur noch anzuzeigen. Eine weitere Funktion des Applikationsobjekts illustrieren die nächsten beiden Zeilen: map_file() nimmt die angeforderte URI und versucht ein passendes Dokument in der zuvor aufgebauten Dokumenthierarchie zu finden. Hierbei berücksichtigt es zusätzliche Aspekte wie die angeforderte Sprache. Die ermittelte Datei schreibt init() in das Request-Objekt zurück. Da der init-Aufruf vor der Ausführung aller anderen Dateien stattfindet, kann diese Funktion viele Parameter des Requests beeinflussen und verändern. Dass die Datei mit dem Applikationsobjekt über denselben Pfad gesucht wird wie andere Dateien, kann man zur Definition eines abgeleiteten Applikationsobjekts nutzen. In der Embperl-Website geschieht das im Verzeichnis /db. Die Website stellt verschiedene Informationen zur Verfügung, die sie in einer Datenbank speichert, etwa News, Artikel und Embperl-Sites. Nicht nur auf der Embperl-Website liegen Inhalte in unterschiedlichen Formaten vor: Ihre Startseite ist in HTML erstellt, während für die Dokumentation POD (Plain Old Documentation) zum Einsatz kam. Teilweise handelt es sich um (HTML-)Dokumente, in denen aus Sicherheitsgründen Perlfragmente nicht interpretiert werden dürfen. Der syntax-Parameter teilt Embperls Execute-Funktion mit, in welcher Sprache die zu ladende Datei vorliegt. Es gibt eine Reihe vordefinierter Grammatiken (unter anderem SSI, ASP, Perl, Text, RTF, POD), man kann sich jedoch ebenso seine eigene Syntax erstellen. Um solche Aufgaben zu lösen, kann man Rezepte (‘Recipes’) definieren. Sie beschreiben die Teilschritte, die ausgeführt werden, um aus den Quellentext das Ergebnis zu erzeugen. Jeden dieser Teilschritte erledigt ein so genannter Provider. Wählt man kein Rezept aus, kommt das Standardrezept zur Anwendung, das die Teilschritte Einlesen, Parsen, Übersetzen, Ausführen und Ausgeben definiert. Neben diesem Standard sind in der Embperl-Distribution verschiedene Rezepte zur Verarbeitung von XML einschließlich XSL-Transformation enthalten. Bieten sie nicht das Nötige, kann man sich sein eigenes Rezept zusammenstellen. Für die POD-Ausgabe greift das Beispiel auf das Rezept EmbperlXSLT zurück und setzt zusätzlich den syntax-Parameter auf ‘POD’, wodurch Embperl die Ausgangsdatei in XML wandelt. 9000e.com - Webdesign Agentur für Neue Medien Simon-Dach-Strasse 12 - 10245 Berlin Tel.: +49 [0]30 547 19 231 - Fax: +49 [0]30 547 19 232 E-Mail: info@9000e.com |