© saicle/Shutterstock.com
Neues von FLOW3

The final Countdown


Nach einer Entwicklungszeit von nahezu fünf Jahren verlässt FLOW3 seine Alphaposition und bewegt sich rasend schnell auf die erste finale Version zu. Das FLOW3-Team, eine Arbeitsgruppe innerhalb der TYPO3 Association [1] rund um Robert Lemke und Karsten Dambekalns, hat sich vorgenommen, ein modernes und zukunftsträchtiges PHP-Enterprise-Framework zu erschaffen, das den Vergleich mit Symphony, Ruby on Rails oder Spring nicht im Geringsten zu scheuen brauchen wird. Zunächst für die nächste Generation des Enterprise CMS TYPO3 entwickelt, kann FLOW3 davon völlig unabhängig verwendet werden, um moderne komplexe Webapplikationen zu erstellen. Der folgende Artikel soll eine Starthilfe zu FLOW3 geben.

FLOW3 vereint viele moderne Konzepte wie Domain-driven Design (DDD), Model View Controller (MVC), Aspect-oriented Programming (AOP), Dependency Injection (DI) und einige weitere [2] in einem ganzheitlichen Framework, das grundsätzlich mit dem Paradigma Convention over Configuration konzipiert wurde. Das beschleunigt die Entwicklung enorm, da bereits viele sinnvolle Annahmen getroffen wurden, um die sich der Entwickler zunächst nicht kümmern muss. Er kann sich zu jeder Zeit voll und ganz auf sein Problem und dessen Lösung konzentrieren. Wenn auch in der Einleitung viele Buzzwords den Eindruck erwecken, dass die Arbeit mit FLOW3 mit sehr viel Aufwand für den Programmierer von heute verbunden ist, so ist der Einstieg in das Framework dennoch einfach.

Installation von FLOW3

Vor der Installation von FLOW3 müssen folgende Systemvoraussetzungen erfüllt sein:

  • Ein Webserver (empfohlen wird Apache mit aktiviertem mod_rewrite-Modul)

  • PHP 5.3.2 oder höher (mit memory_size > = 128M und magic_quotes_gpc = Off)

  • Eine PDO-kompatible Datenbank wie MySQL

  • Zugriff zur Kommandozeile

Selbstverständlich versteht sich FLOW3 aber auch mit anderen Datenspeichern wie NoSQL (beispielsweise CouchDB [3]). Laden Sie sich zunächst FLOW3 von der Projektwebsite http://flow3.typo3.org/download/ herunter und entpacken das Archiv auf Ihrem Webserver:

Build/ Configuration/ Data/ Packages/ Readme.txt Upgrading.txt Web/ <-- Das Document-Root muss auf das Verzeichnis Web zeigen flow3 flow3.bat

Ihren Webserver richten Sie so ein, dass das Document Root auf das Verzeichnis Web zeigt. Alle für das Framework relevanten Teile liegen damit also außerhalb des Document-Root-Verzeichnisses, was für eine Basissicherheit sorgt. Nun müssen die Zugriffsrechte entsprechend gesetzt werden. Da man auf FLOW3 sowohl über die Konsole (eine Übersicht über alle möglichen Kommandos erhalten Sie mit ./flow3 help) als auch über den Webserver zugreift, gibt es einen eigenen Befehl, der beide Zugriffsberechtigungen entsprechend richtig setzt:

./flow3 core:setfilepermissions patricklobacher www www

Anstelle von „patricklobacher“ geben Sie Ihren Shell-Benutzer an, darauf folgend kommt der Webserveruser (www-data) und abschließend die Webservergruppe (www-data). Unter Mac OS X sind Webserveruser und -gruppe auch oft _www anstelle von www-data. Zusätzlich ist es sinnvoll, den eigenen User zur Webservergruppe zuzufügen: sudo usermod -a -G www-data patricklobacher beziehungsweise sudo dscl . -append /Groups/_www GroupMembership patricklobacher für Mac OS X. Wenn Sie nun die Website aufrufen (im Folgenden wird von einem virtuellen Host mit dem Namen flow3 ausgegangen, also http://flow3/), sollten Sie den FLOW3 Welcome Screen sehen können (Abb. 1). Wenn Sie stattdessen eine Fehlermeldung sehen, so überprüfen Sie das PHP Error Log auf entsprechende Einträge. Eventuell wundern Sie sich über die Geschwindigkeit beim ersten Aufruf. Der Grund ist, dass FLOW3 per Default im so genannten Development Context startet, in diesem werden Fehler- und Debug-Meldungen ausgegeben und zudem wird der Cache viel loser verwendet. Zudem baut sich der Cache beim ersten Laden erst einmal auf.

lobacher_flow3_1.tif_fmt1.jpgAbb. 1: Der FLOW3 Welcome Screen

Sobald Ihre Webapplikation fertig gestellt ist, können Sie FLOW3 so konfigurieren, dass es im Production Context läuft. Dafür reicht ein entsprechender Eintrag in der vhost-Datei:

<VirtualHost *:80> DocumentRoot /opt/local/apache2/htdocs/flow3/ ServerName flow3 SetEnv FLOW3_CONTEXT Production </VirtualHost>

Ein Package erstellen

Der Code einer Applikation inklusive ihrer Ressourcen (wie Bilder, Stylesheets, Templates etc.) wird in so genannte Packages gebündelt. Jedes Package wird durch einen eindeutigen Namen gekennzeichnet, der aus dem Firmen- beziehungsweise Domainnamen (Vendor-Name) und dem Package-Namen besteht. Wir verwenden im folgenden Acme [4] als Vendor-Name und Demo als Package-Namen, somit erhalten wir also den Package-Key ACME.Demo. Um das Package anzulegen, können wir den Kickstarter verwenden, der über das FLOW3-Kommandozeilentool erreichbar ist (Windows-Benutzer können hier die Datei flow3.bat verwenden):

$ ./flow3 kickstart:package Acme.Demo Created .../Acme.Demo/Classes/Controller/StandardController.php Created .../Acme.Demo/Resources/Private/Templates/Standard/Index.html

Der Kickstarter legt nun das Package inklusiver Controller, Template und einiger weiterer Dateien sowie Verzeichnisse unterhalb des Ordners Packages/Application/ an (Listing 1).

Listing 1

Acme.Demo Classes Controller StandardController.php Package.php Config...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang