Abschließend folgt noch eine kleine Statstik über die Verteilung der LOCs in den einzelnen Paketen:
Paket | Funktionalität | LOC |
Action | Anwendungsfälle (15 Stück!) | 490 |
Model | Plain PHP Objects (Attribute, getter, setter) | 320 |
Framework | 560 | |
Persistenz | (230) | |
Presenter | (120) | |
Controller | (90) | |
Session Verwaltung (Authentication, Identity, Session) | (120) | |
View | HTML Seiten | 800 |
Summe | 2170 |
Im Vergleich mit P3 und P5 sieht man sehr schön, dass die geplante Architektur eingehalten werden konnte und somit eine schöne Kapselung von Zuständigkeiten vorliegt.
Wer sich unser Projekt genauer ansieht, wird beispielsweise feststellen dass wir trotz Datenbank keine vordefinierten SQL Statements verwenden (ORM sei Dank :)). Den Source findet ihr als ZIP hier.
Hier ein paar inhaltsleere Schlagwörter (sinngemäß © Review-Partnerteam), die unser Projekt auszeichnen.
- URL Rewriting
- Front Controller
- SQLLite DB
- Objektrelationales Mapping (ORM)
- Templatesystem mit Push und Pull - Ansatz
- Intensive Singleton Verwendung
- (Pseudo) Dependency Injection durch Abruf der Singleton Instanzen im Konstruktor der abhängigen Klassen und Referenzierung in privaten Klassenattributen.
- Interfaces (Klasse Persistence), Abstrakte Basisklassen
- Class Hints
- Magische __get() Methoden (zB zur Auflösung von ForeignKeys in Objekte im Rahmen der ORM)
- Reflection (zb beim Bau der SQL - Statements)
- AJAX Anzeige freier Plätze (zwecks besserer Vorführbarkeit alle 2 Sekunden randomisiert zwischen 1 und 400)
Meine Teamkollegen hat es gefreut, umso mehr da sie zu Beginn des Semesters noch gar keine Ahnung von PHP hatten und durch Zurückgreifen auf bereitgestellte Kernfunktionalität nicht mit Low-Level-Implementierungsdetails überfordert wurden.