gBoard ist ein Bulletin Board System, das in PHP5 geschrieben ist. Ich hätte es gerne in Java entwickelt, aber
leider wird Java von den wenigsten Hostern unterstützt, wohingegen man überall PHP-Unterstützung bekommen kann.
Also hab ich versucht so viel wie möglich aus der Java-Welt zu übertragen. Das betrifft vor allem die
Java Code Conventions (woraus auch folgt:
eine Datei pro Klasse, die den Namen der Klasse hat).
Außerdem ist der Code sogut wie vollständig Object Orientiert, wobei konsequent auf das
MVC-Pattern gesetzt wurde.
Es wurde ferner Wert darauf gelegt, die Software möglichst sicher zu machen. Das umfasst die Tatsache, das
alle Variablen initialisiert werden. Auf sämtliche Daten die per POST, GET oder COOKIE übergeben werden,
wird ausschließlich über eine Wrapperklasse zugegriffen - niemals direkt. Datenbank-abfragen werden nur mit PreparedStatements
durchgeführt, wobei der Datenbankzugriff in
DAOs,
mit einfacher
CRUD-funktionalität, gekapselt wird.
Es wird zudem reichlich gebrauch von den Verbesserungen gemacht, die PHP5 mit bringt. D.h. das Board ist
nicht
rückwärts-kompatibel zu PHP4!
So werden unter anderem die "magic-methods" benutzt, und die enormen Verbesserungen im Hinblick auf OOP
sind quasi essentiell - z.B. die Kapselung (private, public, protected) die in PHP4 quasi nicht existent war.
Auch die mit PHP5 endlich eingeführten Interfaces werden konsequent eingesetzt.
Verwöhnt von SpringFramework für Java, hab ich zudem ein eigenes kleines Framework geschrieben, das
IoC/DI ermöglicht, wobei man ebenfalls wie in Spring die Beans in einer XML-Datei konfigurieren kann - dabei
kamen mir vor allem die "magic-methods" von PHP5 entgegen, die die Sache enorm vereinfacht haben.
Als Templatesystem kommt Smarty zum Einsatz. Eine Wrapperklasse "ModelAndView" ermöglicht einen ähnlichen
Stil wie mit Spring.
Das Board ist derzeit zu etwa 40% fertig. Der Großteil der Funktionalitäten im Frontend
ist soweit fertig (bis auf ein paar Kleinigkeiten), aber das AdminSystem fehlt noch vollständig.
Es sind aber dennoch alle herzlich eingeladen sich den Code aus dem CVS zu laden und diesen nach Fehlern
zu durchsuchen, oder auch mal das Board installieren und ausprobieren, was bereits geht, wo es Probleme gibt
und was man verbessern könnte/sollte.