Das Simple PHP Application Framework unterstüzt den Entwickler bei der Implementierung von wartbaren Webapplikationen. Die Trennung von Programm- und Anzeigelogik wird durch den Einsatz der Template Engine Smarty erreicht. Die grundlegene Architetur der Applikation implementiert das Page Controller Pattern.
SPAF ist modular aufgebaut, so daß einzelne Komponenten relativ einfach durch individuell angepaßte Versionen ersetzt werden können. Das Framework implementiert die folgenden Rahmenfunktionen einer Webapplikation:
Ausnahmen werden Fehlernummern zugeordnet, auf die frei konfigurierbare Fehlertexte gemappt werden, so daß die Sprachanpassung relativ einfach zu bewerkstelligen ist..
Alle Request-Parameter werden automatisch in der jeweiligen Session gespeichert und stehen im Template zur Verfügung. Die Parameter könne von der Applikation gelöscht oder überschrieben werden.
Jedem Request wird in der Request- und Responsephase eine Funktion der Applikation zugeordnet. Mit Hilfe der Zugriffskontrollmechanismen kann für jedem Benutzer ein Zugriffswert (Accesslevel) gegeben werden. Dieser Wert entscheidet, ob der Zugriff auf eine Seite oder Funktion erlaubt wird.
Das zentrale Applikationsscript (z.B. index.php) bindet SPAF.php ein und erzeugt eine Instanz der Klasse, die die Steuerung der Applikation uebernimmt. Die Applikationsklasse wird von SPAF abgeleitet.
############################################################## <?PHP $HOMEDIR = "/var/www/app"; # Global: homedir require 'global.php'; require 'CustomApp.php'; $spaf = new ServicePoint(); $spaf->run(); ?> ##############################################################
Die Methoden, die durch CA (current action) aufgerufen werden, sollten durch eine eigene Klasse implementiert werden, die von SPAF abgeleitet wird.
############################################################## <?PHP /** * file: CustomApp.php */ require 'SPAF.php'; require 'OtherClasses.php'; class CustomApp extends SPAF { function CustomApp() { $spaf = new SPAF(&$this); } function login() { // process login action } } ... ?> ##############################################################
Die anzuzeigende Seite, die durch den Parameter "CP" (current page) festgelegt wird, ruft das Template file <CA>.tpl auf. Die Endung ".tpl" wird vor dem Aufruf von SPAF selbst angehaengt. Die Templates werden im Verzeichnis $HOMEDIR/templates gesucht.
Die Template-Engine Smarty erwartet eine Verzeichnis $HOMEDIR/templates_c, in dem die vorcompilierten Templates abgelegt werden. Der Webserver muss Schreibrechte in diesem Verzeichnis haben.
Die Konfigurationen werden im Verzeichnis $HOMEDIR/configs gesucht. SPAF nutzt die Konfigurationsdateien:
Enthaelt die Zuordnungen vom Action/Seitenname zum Accesslevel in der Form
<bezeichner> : <level>Der Zugriff auf eine Seite ist erst erlaubt, wenn die aktuelle Session einen Accesslevel von >= Page Accesslevel in authz.conf ist. Bei der Authentisierung wird der Accesslevel der Session mit der Methode
$this->setAccess($level)gesetzt.
Die Datei error.msg enthaelt die den Fehlernummern zugeordneten Fehlermeldungen in der Form:
<num>: <message>
Wichtig: Zeilenumbrueche sind in der Fehlermeldung nicht erlaubt.
Fehlermeldungen werden mit der Methode $this->setError($number) gesetzt. Im Template steht die Meldung in den Variablen {$errorMSG} und {$MESSAGE} zur Verfuegung.
Die Datei messages.msg enthaelt allgemeine Meldungen, die in der Applikation mit setMessage($number) gesetzt werden koennen. Die Meldungstexte stehen im Template in der Templatevariable {$MESSAGE} zur Verfuegung.
Die Zuordnung der Meldungen zu Meldungsnummern erfolgt in der Form:<num>: <message>
Wichtig: Zeilenumbrueche sind in der Meldung nicht erlaubt.
Wenn die eigene Applikations-Klasse einen Konstruktor definiert, muss dieser den Konstruktor der Klasse PHPApp aufrufen und sich selbst ($this) als Referenz uebergeben:
function CustomApp(){ // Constructor of CustomApp new PHPApp(&$this); }
Die Seitensteuerung wird von den Klassenattributen 'CA' und 'CP' uebernommen.
Der Parameter CA legt die aufzurufende Metode der Applikationsklasse fest, die die Logik definiert. Wenn diese Methode nicht existiert, wird versucht eine Datei dieses Namens (mit der Endung .php) zu includen.
Die aufzurufende Methode bzw. die zu includende Datei kann auch per PATH_INFO uebergeben werden. Hierzu wird das Script in der Form
index.php/methodaufgerufen.
Wenn der POST oder GET Parameter CA definiert ist, legt er fest, welche (Template-) Datei im Templateverzeichnis die Darstellung (View) der Auszuliefernden Seite bestimmt. Dieser Parameter kann von der Logik der Applikation neu gesetzt werden, um z.B. im Fehlerfall eine Fehlerseite auszuliefern.
Wenn CA nicht definiert ist, wird diese auf den Wert von CP gesetzt.