Modelle, Ansichten, Kontrolleure — MVC mit PHP

Seitdem ich mit PHP programmiere Wünsche ich mir ein schönes Framework, mit dem ich schnell und ohne viel Aufwand an den “Grundbausteinen” sachen aufsetzen kann. Teilweise baute ich mir soetwas dann selbst. Die andylib bestand damals primär aus einer Datenbank-Abstraktionsklasse, verschiedenen Tools und einer Template-Engine.

Das benutzte ich dann auch für verschiedene Projekte, bis ich dann merkte das Template-Engines mit eigenen abgefahrenen Markup-Ergänzungen und so weiter absolut nichts bringen und nutzte dann primär nurnoch die Datenbank-Klasse. Irgendwann entdeckte ich dann ORM und es gesellte sich noch eine “DatabaseObject”-Klasse dazu. Zusammen mit einer modulartigen Aufteilung hatte ich dann das knusperFramework, welches ich für verschiedene Sachen verwendete, wie zum Beispiel emmy2, mein ehemaliges Galerieskript1Was jetzt eigentlich nurnoch der sh00t verwendet.

Der Nachteil dabei: Framework und eigentliche Applikation waren nicht besonders gut voneinander getrennt. Außerdem entwickelte ich das Framework quasi parallel zu den Applikationen weiter, was dann dazu führte, dass ich letzendlich verschiedene Versionen des Frameworks im Einsatz hatte und die Apps, die eine alte Version benutzten nicht richtig updaten konnte, weil alles viel zu sehr verbunden war.

Dann programmierte ich eine Zeit lang außer animewatch eigentlich nichts großartiges. Teilweise weil ich keine Ideen hatte, teilweise aber auch, weil ich zu faul war ohne ordentliche Grundlage etwas zu beginnen. Irgendwann begann ich dann etwas zu recherchieren und fand MVC Architekturen ganz toll.

Schritt 1 – Java, Wicket, Hibernate

Da wir diese Kombination hier in der Firma einsetzen und ich es anfangs echt super fand, dachte ich, warum nicht auch private Projekte damit umsetzen. Als ich es dann nach Stunden des Rumprobierens mit Netbeans und Tomcat es endlich zum Laufen bekommen habe, viel mir dann aber auch schon ein, dass es für kleine Projekte einfach viel zu fett ist. Mittlerweile, dadurch das ich hier im Arbeitsalltag regelmäßig von Wicket geärgert werde, bin ich auch nichmehr so begeistert davon.

Schritt 2 – CakePHP

cake-logo-150x150Also kam ich wieder zurück zu PHP. Da gibt’s ja verschiedene Ansätze die sich sehr verbreitet haben. Symfony, Zend Framework und CakePHP um nur einige zu nennen. Ich entschloss mich letzendlich erstmal dafür CakePHP zu testen, da es mir von den dreien am schlankesten und einfachsten vorkam. Allerdings setzt es immernoch auf PHP4-Support und ist damit OOP-technisch nicht so sauber :/

Damit realisierte ich dann erstmal die Homepage meiner Freundin und twmem.com, was beides recht gut funktioniert hat und mir doch recht gut von der Hand ging, dank des Frameworks.

Aber auch CakePHP ist mir irgendwie zu schwer, groß und umfangreich um es schnell und universell, auch in kleinen Projekten einzusetzen. Für größere Sachen wäre es allerdings weiterhin meine erste Wahl, bis jetzt zumindest.

LightVC, CoughPHP

Auf meiner Suche nach lightweight Lösungen bin ich letzendlich bei der Kombination aus LightVC und CoughPHP angelangt, was beides vom selben Entwickler stammt und daher gut zusammen als MVC-System arbeitet.

Hier ist echt alles schön leichtgewichtig, wie ich es haben wollte, allerdings gibt’s auch hier Ecken und Kanten und manches will einfach nicht so wie ich es gern hätte. Nachdem ich nun angefangen hab ein kleines Projekt damit zu realisieren, muss ich auch feststellen das es einfach auch nicht das perfekte System ist.

Eigenentwicklung

Was bleibt also übrig, wenn man sich mit nichts wirklich anfreunden kann? Selber entwickeln und zwar unter folgenden Gesichtspunkten:

  • Leichtgewichtig, Framework-Daten von der Applikation getrennt, leicht austauschbar
  • Model-View-Control-System, natürlich
  • Code-Generator für die Models, Generierung direkt aus der Datenbank
  • “Adminpanel” für CRUD-Operationen für die generierten Models, was sehr leicht erweiterbar sein soll

Letzteres hab ich jetzt schon unter Anpassung von LightVC hingebogen, aber den Rest werd ich wohl noch schnell zusammenschustern müssen. Mal sehen ob ich damit dann zufriedener bin u_u. Aber ich bin ja nie zufrieden mit irgendwelchen Dingen beim Programmieren ._.

15. August 2009 — Code, Meinung