Mein eigenes MVC-Framework- Einführung
Vorwort
Dieses Tutorial soll zeigen, wie ich mein Framework entwickelt habe. Ich behaupte nicht, dass ich immer alles perfekt gelöst habe, aber ich versuche es zumindest 😉
Es soll auch gesagt sein, dass man sich nur an die Entwicklung eines eigenen MVC-Frameworks trauen sollte, wenn man extreme Langeweile hat oder einfach nicht mit Fertigprodukten wie Zend oder CakePHP arbeiten will. (Auf mich trifft beides zu :-D)
Weiterhin finde ich, dass es keinen größeren Lerneffekt geben kann, als wenn man etwas komplett selbst programmiert.
Doch jetzt soll erstmal geklärt werden, was MVC überhaupt bedeutet.
Was ist ein MVC-Framework?
Ein MVC-Framework (Model View Controller) ist ein Grundgedanke der objektorientierten Softwareentwicklung.
Es besteht aus 3 Schichten, die (teilweise) zusammen arbeiten:
- Model: Das Model sorgt für die Datenbeschaffung für den Controller und die View. Es verwendet z.B. eine Datenbank oder liest Dateien aus. Das Wichtigste ist aber, dass das Model jederzeit gegen ein anderes ausgetauscht werden kann, ohne dass der restliche Code geändert werden muss. Das nennt man dann modulare Programmierung 🙂
- View: Die View sorgt für die Ausgabe. Es kann mehrere Views geben, z.B. eine HTML-View, die für die Darstellung der Seite im Browser zuständig ist. Oder eine PDF-View, ddie die Seite zum Download anbietet. Auch wäre eine Debuggung-View möglich, bei der alle wichtigen Informationen (Variablen-Dumps, usw.) ausgegeben werden. Den Zugriff hierauf sollte man allerdings nur Administratoren gewähren.
- Controller: Der Controller ist die Verbindung zwischen View und Model. Im Controller werden die Daten, die aus dem Model kommen, verarbeitet und an die View-Schicht geleitet. Diese übernimmt dann die Ausgabe.
Welcher Controller geladen wird, entscheidet der sogenannte FrontController. Was das ist, wird im Laufe des Tutorials geklärt.
Welche Grundkenntnisse brauche ich, um ein MVC-Framework zu entwickeln?
Ganz wichtig sind Grundkenntnisse in OOP und PHP5, sprich Vererbung, Design Patterns (Singleton, Factory, Registry, …), Sichtbarkeitsbereiche (public, protected, private), usw.
Außerdem sollte man nicht direkt mit einem eigenen MVC-Framework starten, wenn man sonst noch keine Erfahrung in PHP hat. Gerade wenn man ein Projekt dringend fertigstellen muss, ist es besser, auf ein fertiges Framework zurückzugreifen. Wenn man aber ein Framework will, das voll und ganz den eigenen Ansprüchen entspricht, ist man mit dem Selberentwickeln sehr gut bedient. Der große Vorteil ist, dass man sehr genau weiß, wie alles funktioniert. Des weiteren hat man dann keine Funktionen, die nicht wirklich benötigt werden!
Was benötige ich alles?
Es wird nicht viel benötigt:
- Ein Webserver (z.B. XAMPP)
- PHP5 (bei XAMPP dabei)
- evtl. MySQL (bei XAMPP dabei)
- einen Browser (Firefox, was sonst?)
- Geduld
Wichtige Anmerkung
Anders als in vielen anderen Tutorials zum MVC-Pattern verwende ich hier KEINE Template Engine wie Smarty. Ich verwende auch KEIN ORM-Framework wie Doctrine.
Warum nicht?
Weil ich erstens kein Fan von Fertigskripten bin und zweitens meine Gründe gegen Template-Engines habe. Sie verbrauchen nur unnötige Ressourcen und machen den Designern das leben schwer. Wozu hat denn PHP eine eigene Template-Syntax? Richtig! Um sie zu nutzen. Und genau das wird in diesem Tutorial geschehen.
Natürlich wäre es auch problemlos möglich, Smarty zu verwenden. Wer das tun will, kann das gerne tun 😉 OOP ist ja nicht umsonst so erweiterungsfähig. Man muss dann lediglich die View-Klasse anpassen, so dass sie die Daten an Smarty weitergibt.
Bist du noch da?
Wenn du mein Tutorial jetzt noch nicht weggeklickt hast, scheinst du alles verstanden zu haben! Das nenne ich mal eine gute Vorraussetzung. Also kann es jetzt auch schon mit der Praxis losgehen!
Als erstes legen wir unsere Verzeichnisstruktur fest.
Um das ganze übersichtlicher zu gestalten, findet ihr dieses Kapitel auf einer neuen Seite: Verzeichnis-Struktur
[…] Einführung in MVC-Frameworks (Was brauche ich, was ist MVC?) […]
[…] Mein eigenes MVC-Framwork- Einführung (15) […]
[…] Mein eigenes MVC-Framework- Einführung […]
Jo, sehr guter Artikel!
Ich bin gespannt, wie es weitergeht…
[…] das MVC-Prinzip verfolgt das EVA-Prinzip. Dort wird aber noch weiter abstrahiert. Share and […]
[…] dir mal das MVC-Pattern an. Damit solltest du solche Probleme nicht mehr haben __________________ PHP […]
„Sie verbrauchen nur unnötige Ressourcen“…
Leck mich am Arsch.. du sprichst mir aus der Seele.
Versuche das schon seit Monaten mal durchzusetzen aber
keiner checkt es weil alle diese tollen klick-bunti-ich-bin
total-langsam Frameworks nutzen wollen. Symfony z.B. hat
ein sehr witziges Request-Objekt 🙂
Wie sieht denn dieses Objekt aus? Würde mich mal interessieren
http://www.net-developers.de/2008/08/17/mein-eigenes-mvc-framwork-verzeichnisstruktur/
404 – Not found
???
naja so schön wie es angefangen hat wurde es auch schon wieder beendet!
Wo steht 404 – not found?
Ach, das meinst du. Der richtige Link lautet http://www.net-developers.de/blog/2008/08/17/mein-eigenes-mvc-framework-verzeichnisstruktur/
Habe es korrigiert!
Danke für den Hinweis 🙂
Hallo, können Sie mir evtl. zu diesem Tutorial den Quellcode in einer ZIP geben? Es wäre für mich viel einfacher, den Quellcode direkt zu probieren / die Dateien einzeln anschauen zu können. Bisher habe ich MVC nur in Java angewandt und möchte es auch mal mit PHP probieren (wobei es da viele Probleme gibt, z.B. wegen fehlender TagLibaries etc)
du mir eine E-Mail an simon@net-developers.de schickst und mir deinen Wunsch mitteilst, kann ich das gerne tun 🙂
Die aktuellste Version meines HMVC-Frameworks erhaltet ihr ab sofort immer hier: http://www.net-developers.de/blog/2011/02/13/download-info-shfw-hmvc-framework-in-php/