Ich denke, dass die Verwendung eines der üblichen Frameworks wahrscheinlich der richtige Weg ist. Der Grund dafür ist, dass viele gute Entwickler viel Zeit damit verbracht haben, zu schreiben, Fehler zu beheben, zu optimieren und zu polieren, um etwas Solides zu schaffen, auf das Sie Ihre Site aufbauen können. Am besten ist es, einen zu finden, den du magst, zu lernen und dabei zu bleiben (es sei denn, du findest einen Grund, dies nicht zu tun). Wenn ich mit PHP arbeite, ist meine Wahl in der Regel Zend Framework , aber es gibt auch CodeIgniter , Symfony , CakePHP und ein Haufen anderer .
Wenn Sie immer noch das MVC-Muster ohne ein bestehendes Framework verwenden möchten, haben Sie entweder die Wahl, Ihre eigenen zusammenzustellen oder jedes Problem logisch voneinander zu trennen - das ist der Kern von MVC, die Frameworks helfen nur Du erreichst es.
Rasmus Lerdorf schrieb über seinen minimalen Ansatz zum MVC-Muster in PHP im Jahr 2006. Könnte eine Lektüre wert sein. Vielleicht interessiert dich auch ein Mini-Framework wie F3 :: PHP (nur PHP 5.3+) - sieht ziemlich vielversprechend aus.
Tausende Wörter konkurrieren nicht mit einem sauberen Beispiel, also hier ein einfacher Anwendungsfall:
Stellen Sie sich vor, Sie möchten eine Seite anzeigen, die ein "Auto" (mit einer "Auto-ID") von einem imaginären Fahrzeugverkäufer beschreibt: Ссылка )
Grundsätzlich können Sie Ihren Code mit einer Hierarchie wie folgt strukturieren:
Ein Konfigurationsverzeichnis (das nicht Teil des MVC-Architekturmusters ist):
%Vor%Ein Ordner für Ihr Dokumentenstammverzeichnis (Skripts, die wie Controller funktionieren):
%Vor%Ein Ordner, der das gesamte Modell enthält (Hinweis: "Thin Controllers, Fat model"):
%Vor%Ein letzter Ordner mit all Ihren Ansichten (/ templates):
%Vor%Das ist es.
Sie könnten die Verwendung von $ GLOBALS in den Templates bemerken, dies könnte ein praktischer Codierungsstandard sein, um lokale Template-Variablen von denen zu bezeichnen, die Sie vom "Controller" erhalten.
Damit der obige Code funktioniert, benötigen Sie PHP, das konfiguriert werden muss mit:
%Vor%möchten Sie vielleicht nette URLs, wenn Sie Apache verwenden, können Sie dies erreichen mit:
%Vor%Dies ermöglicht das Schreiben von URLs wie Ссылка , die intern in Ссылка
Als PHP-Dateien verhindert nichts, dass Sie headers.tpl, footers.tpl, menu.tpl, ... erstellen, die Sie mit include () / require () wiederverwenden können, um doppeltes HTML zu vermeiden.
Das ist sehr ähnlich wie Rasmus Lerdorf erwähnt: Ссылка .
Man sollte nicht vergessen, dass MVC ein (architektonisches) Muster bleibt. Softwaremuster sind wiederverwendbare Prinzipien zur Lösung gängiger Probleme. Wenn sie wiederverwendbar wären, würden sie "Bibliotheken" genannt werden.
Frameworks wie Zend Framework, Symfony, CakePHP und dergleichen schlagen eine Struktur vor, die einen MVC-Ansatz übernimmt, aber nicht durchsetzen kann, da MVC ein Architekturmuster ist, das gelernt und sein muss verstanden , ob Sie ein vorhandenes Framework verwenden oder nicht.
Sie können das PHP MVC Tutorial durchlesen, um zu erfahren, wie man simple verwendet MVC-Muster von Grund auf, nicht in einem bestehenden Framework.
Es ist nicht. Core PHP ist ein "Start in der globalen Namespace-Anweisung und ausdrucksorientierten Sprache". Sie benötigen zusätzlichen Code (und einen optionalen URL Rewriter), um jede Art von MVC-Architektur zu implementieren. Dieser zusätzliche Code ist dein Framework.
Um ein MVC-Muster zu erhalten, müssen Sie nur Ihren Datenpersistenzcode ("Modell", meist Datenbankkram), die Hauptanwendungslogik ("Controller") und Ihre Präsentation nach Außen ("Ansicht", wie HTML) trennen Seiten oder RSS-Feeds).
Wenn Sie diese drei Teile in Ihrem Code nicht mischen, haben Sie bereits eine wirklich einfache MVC-Architektur. Erstellen Sie einfach verschiedene Klassen für Ihre Modell-, Ansichts- und Controller-Ebenen, und stellen Sie sich auf eine gut strukturierte Weise vor, wie sie miteinander reden und sich dann daran halten!
Aus Gründen der Code-Wartbarkeit sollten Sie IMMER versuchen, so zu arbeiten.
Indem Sie Ihr eigenes MVC-Framework schreiben, das MVC-Muster und OOP-Prinzipien enthält:)
Sie müssen Front Controller haben, damit jede HTTP-Anfrage eine Datei durchläuft, index.php, app.php oder was immer Sie wollen. Auf diese Weise können Sie Anwendungen an einer Stelle konfigurieren.
Von dort benötigen Sie Routing-Mechanismus, der HTTP-Anfrage, aktuelle URL, Verb / Methode des HTTP-Headers analysiert und basierend darauf werden Sie die entsprechende Controller-Methode / Action Controller aufrufen.
Vom Controller aus können Sie auf Ihre Modelle zugreifen, die sich mit "Heavy Lifting" befassen, mit Datenbank und Domänen- / Geschäftslogik usw. umgehen. Und vom Controller aus können Sie Ansichten rendern.
Sie benötigen also mindestens Front Controller, Router / Dispatcher, Controller, Modelle und Ansichten, um eine einfache MVC-Architektur zu haben.
Sie würden das tun, was andere MVC-Web-Frameworks tun, mit leichten Abweichungen, die von Ihren Präferenzen abhängen.
Sehen Sie sich einige einfache Frameworks wie Codeigniter an und lesen Sie ihren Quellcode, um sich ein Bild von der Funktionsweise von MVC zu machen.
Und viel Spaß beim Aufbau Ihres MVC! Alles dreht sich um den Spaß: D
Tags und Links php