Struts4php

Aus php bar
Wechseln zu: Navigation, Suche

Einführung

struts4php ist ein Framework für PHP Applikationen und basiert auf dem Model-View-Controller (MVC) Design Pattern. Es stellt die Verbindung zwischen der Persistenten Schicht und der Präsentationsschicht der Applikation her. Die Idee für struts4php stammt von dem bereits bekannten Projekt Apache Struts. Die Verwendung von struts4php ist sehr ähnlich zu Apache Struts, d. h. Entwickler, die bereits Apache Struts kennen, werden struts4php sehr leicht erlernen können. Die aktuelle Version von struts4php wurde speziell auf die Neuerungen von PHP 5 abgestimmt und nutzt die mit dieser Version eingeführten objektorientierten Möglichkeiten konsequent aus.

Die PHP Version des Frameworks bietet neben der Hauptaufgabe, der Anwendungssteuerung, eine einfache Konfiguration per XML sowie Funktionen zur automatischen Formularvalidierung. Weiterhin ermöglicht es eine einfache Speicherung der vom Anwender eingegebenen Daten, entweder innerhalb eines Requests oder der Session.

Das Framework konzentriert sich ansonsten nahezu ausschließlich auf die Anwendungssteuerung. Eine direkte Schnittstelle zur Datenbank oder Funktionen zur Erstellung einer HTML Oberfläche bietet das Framework nicht. Das ist jedoch auch als Vorteil zu sehen, da es dem Entwickler die Möglichkeit gibt, die von ihm bevorzugte Datenbankschicht oder Template Engine zu verwenden. struts4php ermöglicht aufgrund seiner Architektur eine einfache Integration nahezu aller bekannten Datenbankschichten und Template Engines.

Im Bereich der Template Engines wird bevorzugt Smarty unterstützt, für das zahlreiche Plugins entwickelt wurden, die eine einfache Integration ermöglichen und dem Entwickler einen schnellen Zugriff auf die im Controller zusammengestellten Daten gewährt.

Vor- und Nachteile

Vorteilhaft ist die Anlehnung an das aus der JAVA Welt bekannte Struts Framework. Entwickler die mit diesem Framework bereits vertraut sind, werden sich schnell in struts4php zurechtfinden. Ein weiterer Vorteil beim Einsatz eines Frameworks ist die Vorgabe für den Programmierer, sich an die durch das Framework vorgegebene Architektur, in diesem Fall das MVC Pattern, zu halten. Die Anwendung wird durch dein Einsatz des Frameworks gezwungener Maßen in kleine, funktionale Einheiten aufgeteilt, was die Übersichtlichkeit, Wiederverwendbarkeit und Pflegbarkeit erhöht.

Nachteilig, und das ist sicherlich ein Punkt den nahezu alle Frameworks gemeinsam haben, ist der Programmier- und Konfigurationsaufwand, der gerade in kleineren Projekten die Vorteile häufig wieder zunichte macht. Weiterhin wird die Performance der Anwendung durch das ständige wieder einlesen der Konfigurationsdaten bei jedem Request negativ beeinträchtigt.

Hier stellt sich die Frage, in welchem Maße der Einsatz von Frameworks, gerade beim Einsatz von PHP als Skriptsprache, Sinn macht.

Installation

Das Framework läuft gleichermaßen unter Linux und Windows. Voraussetzung ist eine funktionsfähige PEAR Installation. Seit der Version 2.0 setzt struts4php den Einsatz von PHP 5.0.x voraus, da seit dieser Version die objektorientierten Möglichkeiten intensiv genutzt werden.

Die Installation erfolgt über den dafür eingerichteten PEAR Channel pear.struts4php.org durch den PEAR Installer.

Beispiel:

root@localhost:~$ pear channel-discover pear.struts4php.org
root@localhost:~$ pear install struts4php/struts4php

Neben dem eigentlichen Framework benötigt struts4php noch zusätzliche Pakete, die jedoch automatisch installiert werden.

Features

struts4php beinhaltet neben dem eigentlichen Framework neuerdings auch zahlreiche zusätzliche Pakete.

Neben einem Paket, dass die wichtigsten Klassen für die grundlegenden Datentypen, wie z. B. eine String Klasse, bereitstellt ist besonders das Collections Paket interessant. Dieses bietet eine umfangreiche Sammlung an Containern zur Auflistung von Daten wie z. B. eine aus der Java Welt bekannten HashMap.

Ein anderes sinnvolles Paket beinhaltet einen Logger, der mittels einer Konfigurationsdatei dem Entwickler ein mächtiges Werkzeug zur Ausgabe verschiedener Debug- und Loggingformation an die Hand gibt, die entweder direkt über die Konsole, per Mail oder in eine Logdatei geschrieben werden können.

Weitere Pakete unterstützen den Entwickler hauptsächlich bei der Internationalisierung seiner Anwendung. Hierzu gehören neben der länderspezifischen Formatierung von Zahlen, Währungen und Datümern auch die einfache und automatische Verwaltung von Ressourcen in sogenannten Property Dateien.

Ein anderes interessantes Feature stellt die einfache Workflow-Engine dar, die wahlweise, über eine XML Datei konfigurierbar, dem Entwickler die Möglichkeit gibt, regelbasierte Abläufe in seiner Anwendung einfach und übersichtlich abzubilden.

Verwendung

Ziel beim Einsatz des Frameworks ist die klare Trennung von Präsentation, Datenhaltung und Anwendungslogik. Dies erhöht die Übersicht und die Wartbarkeit einer Anwendung. Deshalb definiert man in struts4php drei Hauptkomponenten:

  • Templates: Präsentation. Gibt die im Controller geholten Daten zur Laufzeit aus.
  • Action: Controller. Schnittstelle zwischen View und Anwendungslogik (Holen und Aktualisieren der Daten).
  • FormBean: Datenhaltung und Validierung (Inhalte von HTML-Formularfeldern, Kollektionen für Listen usw.).

Diese drei Komponenten werden in der Konfigurationsdatei von struts4php (struts-config.xml) miteinander verknüpft und werden somit in Relation zueinander gestellt.

Beispiel:

<struts-config>
    <form-beans>
        <form-bean name="loginForm" type="LoginForm" include="forms/loginform.php"/> 
    </form-beans>
    <action-mappings>
        <action path="login" 
                name="loginForm"
                type="LoginAction"
                input="templates/login.php"
                scope="request"
                validate="true"
                include="actions/loginaction.php">
            <forward name="success" path="templates/home.php" />
            <forward name="failure" path="templates/error.php" />    		
        </action>
    </action-mappings>
</struts-config>

Diese beispielhafte Konfigurationsdatei verknüpft das Template home.php, mit der Action LoginAction und dem FormBean LoginForm und bildet somit den Anmeldevorgang einer Anwendung ab.

Aktuelle Version

  • 1.0.6 für PHP 4 (30.08.2005)
  • 2.0.1 für PHP 5 (07.11.2006)

Links


Framework Übersicht
Binarycloud | BlueShoes| Cake | InterJinn | KONG42 | Mojavi | PEAR | php.MVC | phpOpenTracker | Phrame | PIWI | PRADO | Seagull | SMART | Solar | Studs | Struts4php | symfony | WACT | Zend Framework