Ist WordPress MVC kompatibel?
Einige Leute denken, WordPress eine blogging-Plattform, einige denken, es als ein CMS, einige beziehen sich auf WordPress als Entwicklungs-framework. Je nachdem, was es ist, bleibt immer noch die Frage. Ist WordPress MVC-konform?
Habe ich die Foren Lesen und jemand fragte über MVC vor etwa drei Jahren. Es gab einige positive Antworten, und ein paar negative. Während niemand genau weiß, was MVC ist und jeder denkt, der es auf Ihre eigene Weise, es ist immer noch ein allgemeiner Begriff, der in allen Diskussionen.
Habe ich wenig Erfahrung mit MVC-frameworks, und es scheint nicht zu sein, nichts über das framework selbst. Die meisten MVC erfolgt durch den Programmierer, habe ich Recht? Nun, gehen Sie zurück zu WordPress, konnten wir betrachten die core-rewrite-engine (WP_Rewrite) der controller? Anfragen & plugin-Logik als Modell? Und Themen wie die Sicht? Oder bin ich immer alles falsch?
Danke 😉
InformationsquelleAutor der Frage kovshenin | 2010-05-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
WordPress selbst ist nicht Architektur in MVC kann man aber bauen sehr MVC-orientierten Themen und plugins, die innerhalb des Rahmens. Es gibt mehrere tools, die helfen können:
WordPress MVC-Lösungen:
MVC-threads auf WordPress.org Ideen und Trac:
InformationsquelleAutor der Antwort user239974
WordPress ist kinda-sorta MVC. Wenn überhaupt ist es eine pull-type MVC layout, wo die Ansicht "zieht" die Daten aus dem Modell. Es tut dies in einer sehr proceedural Weg, anstatt viele verschiedene Objekte, aber dies macht eigentlich die front-end-Vorlagen einfacher zu schreiben in einer Vielzahl von Möglichkeiten.
Dieses gibt den Blick auf einige Grad von der controller-Logik (also der kinda-sorta MVC).
Lets laufen diese nach unten:
Wordpress bekommt eine URL. Die wordpress-core fungiert als controller und bestimmt, was der ersten Abfragen aus der Datenbank, und durch die Erweiterung, welche view geladen werden soll (Kategorie-Ansicht, der einzelne Beitrag oder die Seite, Ansicht, etc). Es dann Pakete, die INTIAL-query-response und sendet diese an die view-Datei.
Dass die view-Datei KANN eine strenge display nur die Datei, ODER es kann zusätzliche Informationen anfordern/Abfragen über das Baujahr ein. Dies ist der pull-Typ des MVC, wo der Blick zieht Daten aus dem Modell statt der regler 'schieben' Daten aus dem Modell in den Blick.
So, wenn der Blick sieht der code zum laden einer Seitenleiste oder widget-Bereich, es bittet für diese Informationen. Jedoch, welche widgets da sein sollte, ist bestimmt der controller, der sieht das Modell für das, was widgets in der sidebar und wählt dann diejenigen, die eingestellt werden, um zu zeigen, auf der aktuellen Seite und gibt diese zur Ansicht.
Dass jedes Teil, dass nicht ein Objekt, nicht das noch weniger MVC. Sie können dies ändern, WP-core, ohne (unbedingt) ändern nichts über ein Thema. Ähnlich, so lange wie Sie die eingebauten Funktionen wie 'get_pages ()', dann das Modell und die Datenbank-Tabellen ändern könnte, so lange diese Funktionen noch kehrte die richtigen Daten. So, das Modell ist unabhängig von der view und der controller ist unabhängig (außer, wenn die Sicht fügt der controller-Logik, mehr zu tun, als den Kern normalerweise tut).
Während Sie KÖNNTE ein model-Objekt hält eine Reihe von Methoden und Sachen wie WPModel::get_pages('bla bla'), und enthalten alles, was Weg, es ist immer noch grundlegend die Trennung von Bedenken.
Anzeigen: template-Dateien
Controller: WP-core
Modell: die verschiedenen Funktionen zum verarbeiten von bestimmten Umgang mit den Daten.
Solange die Namen, Argumente, etc, die gleichen bleiben (oder einfach nur neue Hinzugefügt werden), dann die Trennung von Bedenken ist gepflegt und man kann verändert werden, ohne die anderen zu stören.
Es ist kein super-clean version von MVC, (vor allem, wenn Haken zu engagieren), aber auf einer grundlegenden Ebene, beginnt es dort.
Und proceedural über es ist nicht eine schlechte Sache IMO. Eine Anfrage von einer website ist sehr inhärent proceedural: es ist ein Prozess mit klarem Anfang und Ende, und braucht nur ein Verfahren, um die Anforderung zu verarbeiten, Daten -, Paket -, dann sterben. Sie können diese Schritte mit Objekten und Objekt-Methoden und OOP-layouts (das würde einige Sachen einfacher) oder Sie können schreiben Sie einfach eine Menge von Funktionsaufrufen, und trennen Sie Sie aus. Klasse-Mitglieder wie private Variablen sind verloren, aber je nach den Anforderungen der Anwendung... Sie könnte sich nicht sorgen.
Es gibt keine eins-grand-Weise zu tun, die Entwicklung und die WP setzt sich an wie 20% von Webseiten, so ist es etwas nach rechts. Wahrscheinlich etwas zu tun, nicht die Menschen haben zu lernen/auswendig lernen komplexe Klassenhierarchien, um die Datenbank zu beantworten, die Frage, " welche Seiten werden wie Kinder von Seite x?' und mit diesen Daten umgehen. Könnte man machen, dass es einfach mit OOP? ja, aber wenn Joomla ist ein beliebiges Beispiel, wie schwer es ist die Umsetzung einer komplexen website mit OOP, dann WP ist viel einfacher und schneller, und Zeit ist Geld.
InformationsquelleAutor der Antwort Rampant
Wie bereits erwähnt in den Kommentaren, MVC ist ein Architektur-design pattern, nicht um ein bestimmtes framework, und kein, WordPress, folgt nicht dem MVC-pattern.
Gibt es eine Trennung von Ansichten (templates) von der Programmier-Logik, aber nur im frontend, nicht im admin-panel und eine Allgemeine Trennung der Ansichten und der Applikations-Logik ist nicht zwangsläufig MVC. Eine Implementierung des MVC-Musters in der Regel übernimmt eine Art von Objekt-orientierten Programmier-Paradigma hinter sich, und WordPress ist vor allem umgesetzt in eine Verfahrens-Weise, mit einfachen SQL-Abfragen in der PHP-Funktionen, daher nicht mit einem tatsächlichen Modell.
InformationsquelleAutor der Antwort Daff
Einfach zu aktualisieren mit den neusten Informationen für Menschen schlagen diese aus Suchmaschinen - wp-mvc-plugin http://wordpress.org/extend/plugins/wp-mvc/ geht ein langer Weg zu schaffen, ein mvc-framework zur plugin Entwicklung. Sie können herausfinden, mehr hier: http://wpmvc.org/documentation/70/tutorial/
InformationsquelleAutor der Antwort Dave Amphlett
Eines der Themen, das in regelmäßigen Abständen auftaucht, in den Diskussionen, wie es bezieht sich auf WordPress ist die Idee von WordPress und MVC.
Aber die Sache ist, dass MVC ist nicht die silberne Kugel in der web-Entwicklung, dass wir versuchen, machen es aus zu sein. Ja, es ist ein tolles design-Muster, und ich persönlich denke, dass es passt die web-Anwendung Modell wie ein Handschuh, aber nicht jede Plattform implementiert das design-pattern.
Case in point: WordPress ist nicht MVC.
Und das ist okay. Ich denke, wir müssen zu verlassen, der Wunsch, zu versuchen, zu Schuhlöffel in unsere Projekte beiseite insbesondere, wenn das Muster WordPress bietet nicht nur ausreichend, sondern gut funktioniert, wenn richtig genutzt.
"Aber ich Liebe MVC!"
Tun! In der Tat, ich verbrachte das Letzte Jahr an einem Projekt arbeiten, das mehr oder weniger ahmten die MVC-Architektur.
Ein high-level-Beispiel für MVC.
Einer high-level-Beispiel für MVC.
Beispiel:
Schließlich eine Reihe von rewrite-Regeln gab, die Anwendung einen sauberen Satz von vorhersagbaren URLs im format /Menschen/update/1 oder /people/all.
Was Muster Hat WordPress Implementieren?
WordPress implementiert die event-driven Architektur (von dem es mehrere Variationen, wie das Observer-Muster).
Kurz gesagt, Sie können konzeptionell denken, dieses wie die folgenden:
Nicht zu kompliziert, oder?
Ein high-level-Beispiel von event-driven-Muster
Ein high-level-Beispiel von event-driven-Muster
Wenn Sie beginnen zu denken, in Bezug auf das Paradigma, in dem es arbeitet, anstatt zu versuchen, es zu machen, arbeiten Sie so, wie Sie wollen, dass es funktioniert, es ist befreiend. Es hilft, Probleme zu lösen, ist viel einfacher.
Unter dem Strich ist dies: WordPress implementiert die event-driven-design-Muster, so dass selbst wenn Sie am Ende versuchen zu implementieren MVC, du bist noch zu verwenden das hook-system.
Wenn Sie nicht vorsichtig sind, können Sie versuchen, am Ende das Handwerk die perfekte Architektur ohne eigentlich immer Ihre Arbeit getan, und damit am Ende sich selbst zu finden, so hoch in der Atmosphäre von software, die Sie haben, effektiv zu einem Architektur-Astronauten.
Sie Sagen also, Vermeiden Design Patterns?
Gar nicht! Design Patterns dienen einem Zweck, denn vor allem Sie im Grunde geben uns die Lösungen zu vorher und allgemein Probleme gelöst. Verwenden Sie Sie!
Aber der Punkt, den ich versuche zu machen ist, dass wir brauchen nicht zu versuchen, die Dinge zu erzwingen, um fit Muster, nur weil wir wie das Muster. Das ist nicht Ihr Zweck. Stattdessen nutzen die primäre Muster, das Ihre Plattform der Wahl implementiert – in unserem Fall, es ist eine event-driven pattern – und dann umzusetzen Muster, wo Sie passen (wie dependency injection oder so ähnlich).
Ansonsten ist es wie der Versuch, Ihren Fuß in einen Handschuh.
Höflichkeit (und völlig kopiert :P) aus : http://tommcfarlin.com/wordpress-and-mvc/
InformationsquelleAutor der Antwort Rahul Balakrishna
Nur um die Liste der Optionen, (ich bin zugegebenermaßen voreingenommen, wie der Autor,) swpMVC ist ein voll ausgestattetes, leicht MVC-framework, inspiriert von Rails, Sinatra -, Express-und FuelPHP. Es ist umfassend dokumentiert, und zwar habe ich genutzt und genossen wp-mvc, ich wollte etwas, wo die Modelle waren in der Lage, Auffüllen der Blick auf sich selbst, einschließlich Formular-Steuerelemente für die Interaktion mit den genannten Modellen.
Lege ich diese zusammen weitgehend zu reduzieren die Menge der controller-code, der benötigt wird, um gemeinsam eine app auf der Oberseite des WordPress, und das Ergebnis ist eine sehr schnelle und effektive Rahmenbedingungen, die läuft innerhalb von WordPress. Die Modelle basieren auf PHP Activerecord und 8 Modelle sind bereits für bestehende WordPress-Daten-Typen, einschließlich Post, PostMeta, Benutzer, UserMeta, Laufzeit und noch ein paar mehr. Die Modellierung von Daten ist sehr einfach, Dank der activerecord-Bibliothek, und ich habe es genossen, die Arbeit mit diesem framework immens so weit.
Auch Schiffe mit Unterstrich, PHP und PHP Quick Profiler (wie in FuelPHP.)
InformationsquelleAutor der Antwort Brian Zeligson
RokkoMVC ist ein Mikro-MVC-framework speziell für WordPress. Das Projekt soll zur Vereinfachung von AJAX-Funktionalität in WordPress-Anwendungen, sowie zu bringen in all die anderen Vorteile der Verwendung von Modellen, Ansichten und Controllern zu Ihrem Thema.
InformationsquelleAutor der Antwort rodrigo-silveira
Hatte ich einen bash, der vor kurzem in ein plugin erstellen, dass macht die Verwendung einer einfachen view-controller-system, und mochte durchaus die Ergebnisse, so trennte ich die Vorlage Zeug aus zu seiner eigenen repo. Es bietet Objekt-basierte Steuerungen, übergeben von Variablen, die lokal für PHP-templates, template-Fragmente (templates innerhalb von templates) und Komponenten (template-Fragmenten, die mit Ihren eigenen sub-controller). Alles in zwei kleinen Klassen!!!
Natürlich, ich schrieb diesen code denken, dass keine anderen WP-Entwickler der Meinung waren, das problem vor
;-)
.InformationsquelleAutor der Antwort halfer
Es ist weit von mvc, es gibt keine kinda-sorta Sache, wie einige Leute sagen, es ist entweder MVC oder nicht... Die Tatsache, dass Sie schreiben, Logik auf der view-Ebene nicht qualifizieren es als ein mvc framework. Der Grund, warum Menschen es verwenden - es ist leicht zu erlernen, brauchen Sie nicht zu sein hardcore php Programmierer, Sie sind faul.
InformationsquelleAutor der Antwort lokers