Grundlagen

1. Einführung

Das Adventure PHP Framework (kurz: APF) versteht sich als Hilfsmittel für die Implementierung von objektorientierten, generischen und wiederverwendbaren PHP-Applikationen. Es implementiert eine Reihe von wichtigen, objektorientierten Design-Pattern und bietet umfassende Lösungen alltägliche Aufgabenstellungen an.

Das APF ist keine fertige Anwendung, die lediglich konfiguriert werden muss, sondern eine Basis um solche Applikationen auf einfache Weise und unter Zuhilfenahme von Standard-Vorgehensweisen zu erstellen.

2. Prinzipien und Paradigmen

Wie andere PHP-Frameworks folgt auch das APF bestimmten Prinzipien und Paradigmen. Die folgende Liste zeigt die wichtigsten auf:

  1. Framework statt Klassen-Bibliothek: Das APF versteht sich als Framework und nicht als Klassen-Bibliothek. Es folgt festen Paradigmen folgt und gibt dem Entwickler verschiedene Vorgehensweisen an die Hand, die unveränderlich mit dem Framework verwoben sind. Diese - oft fälschlicherweise als Einschränkung empfundene - Tatsache hilft Applikationen nach erprobten Mustern zu erstellen und schützt Einsteiger vor Fehlern.
  2. Objekt-Orientierung: Die Komponenten des Adventure PHP Framework sind ausnahmslos nach dem objektorientierten Muster entworfen. Dies ermöglicht die Erstellung von gekapselten und wiederverwendbaren Funktionalitäten, die Lösungen für immer wiederkehrende Aufgabenstellungen bereit stellen.
  3. Design-Pattern: Die Implementierung der Komponenten des APF orientiert sich an gängige Entwurfsmuster an um den Einstieg in das Framework zu erleichtern und gängige Begrifflichkeiten zu verwenden.
  4. Bootstrapping: Um Konfiguration und Implementierung zu erleichten arbeitet das APF mit einem einzigen Einstiegspunkt in Ihre Anwendung - der sogenannten Bootstrap-Datei. Diese (z.B. index.php) nimmt alle Anfragen entgegen und beantwortet diese wie vom Entwickler vorgesehen. Details hierzu können Sie beispielsweise unter Hallo Welt! oder Download, Installation und erste Schritte nachlesen.
  5. Trennung von Code und Konfiguration: Die Trennung von Applikationslogik und Konfiguration ermöglicht es Ihnen, wiederverwendbare Komponenten und Module zu erstellen. Nutzen Sie diese Möglichkeit, so lassen sich auf einfache Weise mehrere Projekte auf der selben Code-Basis aufsetzen bzw. eine Multi-Projekt Hosting-Umgebungen basierend auf nur einer APF-Installation aufbauen. Details hierzu erfahren Sie unter Konfiguration.
  6. Offen für Weiterentwicklung: Das APF folgt dem open close principle. Es stellt verschiedene Erweiterungspunkte zur Verfügung, lässt sich jedoch nicht in seinen Grundfesten veränden. Die definierten extension points lassen jedoch nutzen, um auch exotische Anforderungen umzusetzen bzw. die im Framework enthaltenen Komponenten gemäß den Projekt-Anforderungen zu erweitern.
  7. Open Source: Das Adventure PHP Framework ist ein Open Source Produkt! Möchten Sie sich an der Weiterentwicklung beteiligen, werden Sie ein Teil des Teams und nehmen Sie mit uns Kontakt auf oder verfassen eine Beitrag im Forum. Wir freuen uns auf Sie!

3. Das 1 x 1 des APF

In den folgenden Kapiteln können Sie grundsätzliche Dinge über das APF nachlesen.

3.1. Was brauche ich für den Start?

Das Adventure PHP Framework ist ein für PHP geschriebenes Framework für die Entwicklung von Web-Applikationen. Aus diesem Grund benötigen Sie einen Web-Server der über ein PHP-Modul verfügt. Hierzu eignen sich sowohl der de-facto Standard Apache HTTP Server als auch beispielsweise nginx.

Das APF 2.X setzt eine PHP-Version > 5.3.0 voraus, da es im Vergleich zur 1.X-Reihe PHP-Namespaces nutzt. Gängige Pakete wie beispielsweise XAMPP verfügen in den aktuellen Versionen bereits über die notwendige PHP-Version.

Um direkt mit dem Framework loszulegen wird empfohlen, eine apf-demopack-*-Datei herunter zu laden. Diese beinhaltet nicht nur den Code des APF, sondern auch eine fertige und ohne Anpassungen lauffähige Beispielwebseite - die Sandbox. Die Sandbox beinhaltet eine Reihe von Beispielen und Wizzards um sich mit dem APF anzufreunden. Sollten Sie noch keine Erfahrung mit der Entwicklung mit dem APF besitzten, so eignet sich die Sandbox ebenfalls als Start für die Entwicklung von eigenen Modulen oder Komponenten. Diese können Sie später natürlich ohne weiteres in Ihrer eigenen Webseite einsetzen.

Um möglichst effektiv zu entwickeln empfiehlt das APF-Team den Einsatz von PHPStorm. Die IDE von JetBrains unterstützt Sie mit Code-Completion, direktem Feedback bei Code-Fehlern und einer Integration von xdebug zur Fehleranalyse Ihrer Anwendung.

Mit den beschrieben Dingen sind Sie nun bestens gerüstet um mit der Entwicklung zu beginnen!

3.2. Wo finde ich die wichtigsten Ressourcen?

Die Seite des Adventure PHP Frameworks ist in zwei große Bereiche aufgeteilt: der Downloads-Bereich und die Dokumentation.

Im Bereich Downloads finden Sie jeweils die Downloads des aktuellen Release und einen Verweis auf experimentelle Versionen (siehe GIT-Repository). Suchen Sie nach der aktuell in der Entwicklung befindlichen Version, so finden Sie diese unter GIT-Repository zusammen mit einem Verweis auf einen aktuellen Snapshot.

Die Dokumentation zum Framework finden Sie unter Dokumentation. Dort finden Sie wiederum folgende Bereiche: der Komponenten-Dokumentation mit jeweils einem Kapitel zur jeder Komponente, dem Bereich Tutorials und der Sektion Artikel in dem Sie weiterführendes zum Framework und zur Software-Entwicklung nachlesen können.

Zusätzlich stehen Ihnen noch das Forum und das Wiki zur Verfügung.

3.3. Welche Komponenten besitzt das APF?

Das Adventure PHP Framework besteht im Wesentlichen aus vier Bereichen: dem core in dem die Basis-Komponenten beheimatet sind, den tools die für die Entwicklung nützliche Komponenten mitliefern und den modules und extensions, die für den Einsatz fertige Module oder Erweiterungen enthalten.

Ein Release besteht typischerweise aus mehreren Pakete, die jedoch alle auf dem apf-codepack-* aufbauen, das die Code-Basis beinhaltet. Neben diesem finden Sie apf-configpack-*-Dateien in der Liste der Downloads, das einen Satz an Beispiel-Konfigurationen pro Version ausliefert.

Suchen Sie für Ihren Einstieg nach Beispiel-Code, so können Sie sich die Sandbox (Paket: apf-demopack-*) oder die Beispiel-Pakete apf-calc-example-* (Taschenrechner), apf-modules-example-* (Einbindung von dynamischen Modulen) oder apf-vbc-example-* - eine Beispiel-Implementierung für View based caching - ein HOWTO - herunterladen.

4. Ordner-Struktur

Wie in Kapitel 3 aufgeführt beinhaltet das apf-codepack-* die Code-Basis des Adventure PHP Framework. Das Paket ist wie folgt aufgebaut:

Code
APF/ core/ extensions/ modules/ tools/

Die Ordner core und tools beinhalten die Kern-Bestandteile des Frameworks. In core befindet sich u.a. die Implementierung von Page-Controller (/APF/core/pagecontroller/) und Front-Controller (/APF/core/frontcontroller/), in tools u.a. die Implementierung der Formulare (/APF/tools/form/).

Der Ordner modules beinhaltet Module, die auf den core- und tools-Komponenten aufsetzen. Dazu zählen u.a. die Kommentar-Funktion und das Usermanagement-Modul, die in von Ihnen implementierte Webseiten oder Web-Applikation eingebaut werden können.

Details zu den einzelnen Komponenten finden Sie auch in der API-Dokumentation.

5. Aufbau einer einfachen Applikation

Das vorliegende Kapitel zeigt Ihnen, wie Sie ausgehend von einem apf-codepack-*-Release vorgehen um eine einfache Seite aufzubauen.

Weitere Inhalte zum Einstieg in das APF und zum Aufbau einer einfachen Webseite finden Sie auch unter Hallo Welt!, Download, Installation und erste Schritte oder Erstellen einer Webseite. Weitere Tutorials sind auf der Seite Tutorials aufgelistet.

5.1. Aufbau der Bootstrap-Datei

Wie in Kapitel 2 beschrieben, setzt das APF das Bootstrapping-Konzept ein. Dies bedeutet, dass alle Anfragen Ihrer Besucher über eine zentrale Datei (meist index.php, da diese im Webserver als DirectoryIndex konfiguriert ist) verarbeitet werden.

Um eine einfache Applikation zu erstellen, laden Sie sich bitte ein apf-codepack-*-Release herunter und entpacken dieses in einem Ordner Ihrer Wahl unterhalb des DOCUMENT_ROOT des Web-Servers. Anschließend erstellen Sie bitte die Datei index.php parallel zum APF-Ordner.

Um eine einfache Applikation bzw. Webseite zu erstellen starten Sie mit einem initialen Template, das dann die unterschiedliche Bereiche Ihrer Applikation aufnimmt. Als Ausgangspunkt können Sie folgenden Inhalt für Ihre index.php nutzen:

PHP-Code
include('./APF/core/bootstrap.php'); use APF\core\singleton\Singleton; use APF\core\frontcontroller\Frontcontroller; $fC = Singleton::getInstance(Frontcontroller::class); echo $fC->start('APF\site\templates', 'main');

In der ersten Zeile wird die Datei APF/core/bootstrap.php eingebunden. Diese bindet die notwendigen APF-Komponenten ein und konfiguriert diese initial.

Zeile 5 erstellt eine Instanz des Front-Controller und in der letzten Zeile wird die Request-Verarbeitung unter Angabe des initialen Template gestartet. Das echo bewirkt, dass die Rückgabe - also die generierte Seite - an den Benutzer zurückgegeben wird.

Weitere Hinweise zu den Konfigurationsmöglichkeiten in der index.php finden sich unter Konfiguration, Filter, URL-Rewriting und Logger.

5.2. Aufbau des Basis-Templates

Templates spielen im Adventure PHP Framework eine zentrale Rolle. Wie im letzten Kapitel beschrieben, besitzt jede Applikation ein Basis-Template und der Page-Controller nutzt Templates für seine Template-zentrierte Umsetzung des HMVC-Pattern.

Im obigen Beispiel wurde der Front-Controller mit dem Basis-Template main aus dem Namespace APF\site\templates gestartet. Er erwartet daher eine Datei main.html im Pfad APF/site/templates. Die Ordner-Struktur ergänzt sich damit wie folgt:

Code
APF/ core/ extensions/ modules/ site/ templates/ main.html tools/

Füllen Sie das Template nun mit

Html-Code
Meine erste Applikation mit dem APF!

und rufen im Browser die index.php auf, so erhalten Sie den im Template eingetragenen Text.

Das hier besprochene Beispiel geht davon aus, dass die Standard-Konfiguration des APF nicht verändert wurde. Dies betrifft insbesondere die ClassLoader-Konfiguration. Details zu den Anpassungsmöglichkeiten entnehmen Sie bitte dem Kapitel Laden von Klassen.

Weiterführende Beispiele zu Templates können den Kapiteln Hallo Welt! und Templates entnommen werden, das Tutorial Erstellen einer Webseite gibt eine Einführung in das Erstellen von Web-Seiten und -Applikationen.

6. Basis-Konfiguration

Das Framework stellt für einige zentral genutzte Parameter eine Konfigurationsmöglichkeit über die Registry zur Verfügung. Sofern Sie die Parameter für Ihre Applikation anpassen möchten, nutzen Sie bitte die index.php.

Die folgende Liste zeigt die relevanten Parameter im Namespace APF\core:

  • Environment: Das Merkmal Environment ermöglicht eine Unterscheidung der Konfiguration hinsichtlich der Umgebung, in der eine Software eingesetzt wird (z.B. Test- oder Produktions-Umgebung). Details finden Sie im Kapitel Konfiguration.
  • InternalLogTarget: Definiert den Namen des Standard-Log-Ziels für Framework-Fehlermeldungen. Details zur Anwendung und Konfiguration finden Sie im Kapitel Logger.
  • Charset: Definiert den bei Zeichen-Operationen wie beispielsweise htmlspecialchars() verwendeten Zeichensatz. Der Standard-Wert wird in der boostrap.php auf UTF-8 festgelegt.

Möchten Sie die genannten Parameter ändern, können Sie dies wie folgt in der index.php vornehmen:

PHP-Code
include('./APF/core/bootstrap.php'); use APF\core\registry\Registry; Registry::register('APF\core', 'Environment', 'TEST'); Registry::register('APF\core', 'InternalLogTarget', 'framework'); Registry::register('APF\core', 'Charset', 'UTF-16'); ...

Kommentare

Möchten Sie den Artikel eine Anmerkung hinzufügen, oder haben Sie ergänzende Hinweise? Dann können Sie diese hier einfügen. Die bereits verfassten Anmerkungen und Kommentare finden Sie in der untenstehenden Liste.
« 1   »
Einträge/Seite: | 5 | 10 | 15 | 20 |
1
Christian 06.07.2008, 23:09:45
Hinweis zum letzten Kommentar:
Seit Release 1.7-beta wird das URL-Rewriting über den Registry-Wert "URLRewriting" im Namespace "apf::core" konfiguriert (siehe oben).
2
Markus Köhler 02.09.2007, 13:32:12
Nachtrag zur Konstante APPS__URL_REWRITING:
Diese wird ebenso für den frontcontrollerLinkHandler verwendet um zu unterscheiden, ob dieser im URL-Rewriting-Modus arbeitet, oder nicht.