Hallo zusammen,
im Zuge der objektorientierten Programmierung und insbesondere des Model-View-Controller-Ansatzes habe ich mir nun schon öfter Gedanken darüber gemacht, wie man eine Anwendung aufbauen sollte.
Da ich zur Zeit fast ausschließlich mit PHP arbeite beziehe ich mich im folgenden auf eine PHP-Anwendung.
Die index.php ist die einzige ausführbare Datei, die direkt mittels HTTP aufgerufen werden kann. Dies wird mittels .htaccess-Direktiven ermöglicht.
In dieser Datei wird lediglich der Bibliotheks-Pfad in den PHP-Include-Path integriert, die Entwicklungsumgebung als Konstante definiert und ein neues Objekt (die Basis-Klasse der Anwendung, die sich in der Bibliothek befindet) erstellt. Dieser Klasse übergebe ich den Pfad zu einer Konfigurationsdatei.
Diese Basis-Klasse besteht im Wesentlichen aus drei Teilen:
1. Der Konstruktor: Hier werden alle für die Anwendung zwingend erforderlichen Aufgaben durchgeführt (wie z.B. das Auslesen der Config-Datei, Initialisierung des Autoloaders und Fehlerbehandlung, etc.)
2. Der Bootstrap-Prozess: Hier werden alle Aufgaben ausgeführt, die für die allgemeine Anwendung nicht zwingend sind, für die speziellere aber schon. Hierzu zählt beispielsweise die Authentifizierung und Autorisierung sowie das weitere Laden von Plugin-Klassen.
3. Der Start-Prozess: Hier wird die "eigentliche Anwendung" gestartet. Sprich: Der Front-Controller wird aufgerufen, welcher dann als oberste Instanz die weiteren Aufgaben an die anderen "normalen" Controller delegiert.
Meine Verzeichnisstruktur ist "stur" nach MVC ausgerichtet, es gibt also Module-Ordner, die dann Model-, View-, Controller-, Config-, Layout-Ordner oder ähnliches enthalten. Innerhalb dieser Ordner (Anmerkung: Genauso auch in der Bibliothek) steht jede Klasse in einer eigenen Datei.
Zusätlich zur Bibliothek und zur Anwendung gibt's bei mir noch einen Ordner "public", der die zuvor beschriebe index.php und - in Ordnern sortiert - statische Dateien wie Bilder, JavaScripts, CSS und so weiter enthält.
Soviel zu meiner aktuellen Vorgehensweise. Jetzt meine Fragen an Euch:
- Was haltet Ihr von OOP (speziell im PHP-Kontext)?
- Was haltet Ihr von MVC?
- Wie baut Ihr Eure Anwendungen auf?
- Was kommt bei Euch in den Initialisierungs-, was in den Bootstrap-Prozess?
- Arbeitet Ihr mit einem Front-Controller? Und wenn ja, wie verwendet Ihr ihn?
- ...
Über eine rege Diskussion würde ich mich sehr freuen!
Gruß, Dennis