MVC Plugin-Entwicklung in Wordpress
Das Projekt von Elvir zum myInnovationDay:
Die prozedurale Codebasis in WordPress ermöglicht keine (echte) Objektorientierte Pluginentwicklung. Damit sind Wartung und Updates von bestehenden Plugins und Templates schwierig. Gibt es daher Möglichkeiten objektorientierte Programmierung in WordPress zu integrieren?
Lösungsansatz:
Die Recherche ergab, dass es zwar einige Ansätze gibt, objektorientierte Programmierung in Wordpress zu integrieren: Allerdings entspricht kein Ansatz den gewohnten Strukturen und Möglichkeiten anderer Systeme oder Frameworks. WP-MVC erschien mir am vielversprechendsten, weshalb ich dieses Framework ausführlicher getestet habe. Taugt WP-MVC als MVC Framework für WordPress?
Vorteile von WP-MVC:
Damit der Projektstart schneller klappt, kann man den enthaltenen Kickstarter Plugin nutzen. Das Routing wird ebenfalls sofort angelegt. Durch WP-MVC lassen sich Objekte bzw. Custom Posttypes einfach erzeugen und trotz des neuen Aufbaus lassen sich bekannte WordPress Plugins gut weiter nutzen. Größter Vorteil für uns TYPO3-Entwickler ist wohl, dass die Pluginstruktur sehr Extbase Extensions ähnelt und der Zugang damit leicht fällt.
Nachteile von WP-MVC:
Ein Nachteil zeigt sich gleich zu Anfang: Denn trotz der mitgelieferten WP-MVC Dokumentation ist der Einstieg nicht einfach - hier wäre ein umfangreichere Dokumentation notwendig. Nachteil beim Entwickeln: Um das Framework nutzen zu können, ist ein Plugin notwendig. Was uns als objektorienterten Programmierern auffällt: Trotz guten Ansätzen hat man oft das Gefühl von einem Pseudo-OOP.
FAZIT: Lohnt sich WP-MVC?
Ich habe ein Beispiel der 4c Spots Anwendung als Plugin aufgebaut und fand nach einem etwas holprigen Beginn schnell Zugang zu dem Framework. Gerade komplexe Objekte wie Adressdaten, die eigentlich keinem typischen Seitentyp entsprechen, lassen sich so schnell modellieren und mit Funktionalitäten anreichern. Leider merkt man zu oft, dass der Ansatz noch nicht völlig umgesetzt ist: Es fehlen zum Beispiel HTML-Templatedateien und ein strukturierter Datenbank-Layer. Was am meisten stört sind PHP-Ausgaben und -Abfragen in allen Views.