Heim >Backend-Entwicklung >PHP-Tutorial >PHP Master | Das MVC -Muster und das PHP, Teil 1
detaillierte Erläuterung des Modells für Modell-View-Controller-Architekturmodell und PHP-Implementierungsbeispiel
Kernpunkte
Das MVC -Modell wurde ursprünglich Ende der 1970er Jahre vorgeschlagen und ist ein Software -Architekturmodell, das auf der Trennung der Anzeige von Daten von den Interaktionsmethoden mit Daten basiert. Theoretisch sollte ein gut etabliertes MVC-System Front-End-Entwicklern und Back-End-Entwicklern ermöglichen, an demselben System zu arbeiten, ohne sich gegenseitig zu stören, und Dateien zu teilen oder zu bearbeiten, die eine Partei verarbeitet. Obwohl MVC ursprünglich für das persönliche Computing konzipiert war, wurde es von Webentwicklern aufgrund ihrer Betonung der Trennung von Bedenken und indirekt wiederverwendbarem Code ausführlich übernommen. Dieses Modell fördert die Entwicklung modularer Systeme und ermöglicht es Entwicklern, Funktionen schnell zu aktualisieren, hinzuzufügen oder sogar zu löschen. In diesem Artikel werde ich die Grundprinzipien von MVC vorstellen, einen Überblick über die Definition dieses Musters geben und schnell ein Beispiel für MVC in PHP einführen. Dieser Beitrag ist definitiv für jeden gedacht, der MVC noch nie zuvor verwendet hat, um zu codieren, oder für diejenigen, die ihre früheren MVC -Entwicklungsfähigkeiten überprüfen möchten.
MVC
verstehen Der Name dieses Musters ist eine Kombination aus seinen drei Kernteilen: Modell, Ansicht und Controller. Die visuelle Darstellung eines vollständigen und korrekten MVC -Musters lautet wie folgt:
Dieses Diagramm zeigt das Einwegströmungslayout von Daten, die Übergabe von Daten zwischen den Komponenten und die Funktionsweise zwischen Komponenten.
Modell (Modell)
Modell bezieht sich auf die dauerhafte Speicherung von Daten, die im Gesamtdesign verwendet werden. Es muss ermöglichen, dass der Zugriff auf die Daten angezeigt oder gesammelt und geschrieben wird und ist eine Brücke zwischen der Ansichtskomponente und der Controller -Komponente im MVC -Modus. Ein wichtiger Aspekt des Modells ist, dass es technisch "blind" ist - ich meine, das Modell ist nicht mit dem, was passiert, nachdem die Daten an die Ansicht oder die Controller -Komponente übergeben wurden. Es ruft oder sucht weder Antworten aus anderen Teilen. Das Modell kann jedoch nicht einfach als Datenbank oder Gateway auf ein anderes System verallgemeinert werden, das den Datenprozess verarbeitet. Das Modell muss als Gatekeeper der Daten fungieren und keine Fragen stellen, aber alle Anfragen akzeptieren. Modellkomponenten sind normalerweise der komplexeste Teil des MVC -Systems und auch der Kern des gesamten Systems, da es ohne ihn keine Verbindung zwischen dem Controller und der Ansicht gibt.
Ansicht (Ansicht)
In der-Ansicht sind die vom Modell angeforderten Daten und bestimmt die endgültige Ausgabe. In Webanwendungen, die mit MVC erstellt wurden, sind Ansichten traditionell der Systemteil des Generierens und Anzeigens von HTML. Die Ansicht löst auch die Reaktion eines Benutzers aus, und der Benutzer interagiert weiterhin mit dem Controller. Ein grundlegendes Beispiel ist eine Schaltfläche, die von einer Ansicht generiert wird, die der Benutzer klickt und eine Aktion im Controller auslöst. Es gibt einige Missverständnisse über Ansichtskomponenten, insbesondere über Webentwickler, die ihre Anwendungen mit dem MVC -Muster erstellen. Zum Beispiel glauben viele Menschen fälschlicherweise, dass die Ansicht keine Verbindung zum Modell hat und dass alle von der Ansicht angezeigten Daten vom Controller übergeben werden. Tatsächlich ignoriert dieser Prozess die Theorie hinter dem MVC -Muster vollständig. Fabio Cevascos Artikel "CakePHP-Framework: Ihr erster Versuch" zeigt diesen Verschleierungserscheinungsansatz für MVC im CakePhp-Framework, ein Beispiel für viele nicht-traditionelle MVC-PHP-Frameworks:
"Es ist zu beachten, dass es keine Interaktion zwischen dem Modell und der Ansicht gibt, um die MVC -Architektur korrekt anzuwenden: Alle Logik wird vom Controller behandelt."
Zusätzlich ist es ungenau, die Ansicht als Vorlagendatei zu beschreiben. Wie Tom Butler jedoch betont, ist dies nicht die Schuld einer Person, sondern viele Fehler vieler Entwickler, was zum falschen Lernen der Entwickler von MVC führt. Dann erziehen sie weiterhin andere falsch. Die Ansichten sind tatsächlich viel mehr als eine Vorlage, aber moderne MVC-inspirierte Frameworks haben Ansichten so unkenntlich gemacht, dass es niemanden wirklich darum kümmert, ob das Framework wirklich dem richtigen MVC-Muster folgt. Es ist auch wichtig, sich daran zu erinnern, dass der Ansichtsteil niemals Daten vom Controller empfängt. Wie ich bei der Erörterung des Modells ohne Zwischenmodell erwähnte, gibt es keine direkte Beziehung zwischen der Ansicht und dem Controller.
Controller (Controller)
Die letzte Komponente eines Dreifachs ist der Controller. Die Aufgabe besteht darin, die vom Benutzer eingegebenen oder übermittelten Daten zu verarbeiten und das Modell entsprechend zu aktualisieren. Die Rettungsleine des Controllers ist der Benutzer ohne Benutzerinteraktion, der Controller hat keinen Zweck. Es ist der einzige Teil des Musters, mit dem der Benutzer interagieren sollte. Der Controller kann einfach als Informationskollektor verallgemeinert werden, der dann an das Modell für die Organisation zur Speicherung übergeben wird, und enthält keine andere Logik als die Logik, die für die Erfassung von Eingaben erforderlich ist. Der Controller ist auch nur mit einer einzelnen Ansicht und einem einzelnen Modell verbunden, was es zu einem Einweg-Datenflusssystem mit Händeschlägen und Signaturen an jedem Datenaustauschpunkt macht. Es ist wichtig zu beachten, dass der Controller nur Anweisungen zum Ausführen von Aufgaben erhält, wenn der Benutzer zum ersten Mal mit der Ansicht interagiert und dass die Funktionen jedes Controllers Auslöser sind, die durch die Interaktion des Benutzers mit der Ansicht ausgelöst werden. Der häufigste Fehler, den ein Entwickler macht, besteht darin, den Controller mit einem Gateway zu verwechseln und letztendlich die Funktionen und Verantwortlichkeiten zuzuweisen, die die Ansicht annehmen sollte (dies ist normalerweise das Ergebnis desselben Entwicklers, der die Ansichtskomponente einfach fälschlicherweise als Vorlage betrachtet). Darüber hinaus besteht ein häufiger Fehler darin, dem Controller die Funktionalität für die Komprimierung, Bereitstellung und Verarbeitung von Daten aus dem Modell zur Ansicht verantwortlich zu machen, und im MVC -Modus sollte diese Beziehung zwischen dem Modell und der Ansicht gehalten werden.
MVC in php
PHP-Webanwendungen können mit einer MVC-basierten Architektur geschrieben werden. Beginnen wir mit einem einfachen Beispiel:
<code class="language-php"><?php class Model { public $string; public function __construct() { $this->string = "MVC + PHP = Awesome!"; } }</code>
<code class="language-php"><?php class View { private $model; private $controller; public function __construct($controller, $model) { $this->controller = $controller; $this->model = $model; } public function output() { return "<p>" . $this->model->string . "</p>"; } }</code>
<code class="language-php"><?php class Controller { private $model; public function __construct($model) { $this->model = $model; } }</code>
Wir haben ein Projekt mit einigen sehr grundlegenden Klassen für jeden Schema -Abschnitt gestartet. Jetzt müssen wir die Beziehung zwischen ihnen festlegen:
<code class="language-php"><?php $model = new Model(); $controller = new Controller($model); $view = new View($controller, $model); echo $view->output();</code>
Wie Sie im obigen Beispiel sehen können, haben wir keine Controller-spezifischen Funktionen, da wir keine Benutzerinteraktion für unsere Anwendung definieren. Die Ansicht enthält alle Funktionen, da das Beispiel ausschließlich für Anzeigezwecke ist. Erweitern wir nun das Beispiel, um zu zeigen, wie Sie dem Controller Funktionen hinzufügen, um der Anwendung Interaktivität hinzuzufügen:
<code class="language-php"><?php class Model { public $string; public function __construct() { $this->string = "MVC + PHP = Awesome, click here!"; } public function updateString($newString) { $this->string = $newString; } }</code>
<code class="language-php"><?php class View { private $model; private $controller; public function __construct($controller, $model) { $this->controller = $controller; $this->model = $model; } public function output() { return '<p><a href="https://www.php.cn/link/5ca1b0a18c411c3ebfc35c9dad7da921">' . $this->model->string . "</a></p>"; } }</code>
<code class="language-php"><?php class Controller { private $model; public function __construct($model) { $this->model = $model; } public function clicked() { $this->model->updateString("Updated Data, thanks to MVC and PHP!"); } }</code>
Wir haben die Anwendung mit einigen grundlegenden Funktionen erweitert. Stellen Sie nun die Beziehung zwischen den Komponenten wie folgt fest:
<code class="language-php"><?php $model = new Model(); $controller = new Controller($model); $view = new View($controller, $model); if (isset($_GET['action']) && !empty($_GET['action'])) { $controller->{$_GET['action']}(); } echo $view->output();</code>
Führen Sie den Code aus. Wenn Sie auf den Link klicken, können Sie die Zeichenfolge ändern.
Schlussfolgerung
Wir haben die grundlegende Theorie hinter dem MVC -Muster vorgestellt und eine sehr grundlegende MVC -Anwendung erstellt, aber wir haben noch einen langen Weg vor uns, bevor wir uns sorgfältig in die Funktionen einlassen. Im nächsten Artikel in dieser Serie werden wir einige der Optionen abdecken, mit denen Sie versuchen, eine echte MVC -Anwendung im PHP -Web zu erstellen. Bleiben Sie dran! Bild aus Fotolien Die Kommentare in diesem Artikel wurden geschlossen. Gibt es Probleme mit dem MVC -Modus und PHP? Warum nicht Fragen in unserem Forum stellen?
FAQ für den PHP MVC -Modus (FAQ)
Model-View-Controller (MVC) -Modus ist ein Entwurfsmuster, das eine Anwendung in drei miteinander verbundene Komponenten unterteilt. Diese Trennung ermöglicht es Entwicklern, eine Komponente zu ändern oder zu aktualisieren, ohne andere zu beeinflussen. In PHP ist das MVC -Muster besonders nützlich, da es Code organisiert und die Wartung und Skalierung erleichtert. Es kann auch die Effizienz des Datenverwaltungs- und Benutzeroberflächendesigns verbessern.
In PHP bewirkt der MVC -Modus die Anwendung in drei Komponenten. Das Modell verarbeitet Daten und Geschäftslogik, die Ansicht verwaltet die Darstellung der Benutzeroberfläche und Daten, und der Controller verarbeitet die Benutzeranforderung und aktualisiert das Modell und zeigt entsprechend. Diese Trennung von Bedenken ermöglicht ein effizienteres Codemanagement und einfacheres Debuggen.
Implementieren des MVC -Modus in einem PHP -Projekt beinhaltet das Erstellen separater Dateien oder Klassen für Modelle, Ansichten und Controller. Das Modell enthält Funktionen zum Zugriff auf und zum Manipulieren von Daten, die Ansicht enthält HTML- und PHP -Code zum Anzeigen von Daten. Der Controller enthält Funktionen für die Verarbeitung von Benutzern- und Aktualisierungsmodellen und -ansichten.
Es gibt mehrere beliebte PHP -MVC -Frameworks, mit denen Sie das MVC -Muster in Ihrem Projekt implementieren können. Dazu gehören Laravel, Symfony, Codesigniter und CakePhp. Diese Frameworks bieten eine strukturierte und effiziente Möglichkeit, Webanwendungen mithilfe des MVC -Musters zu erstellen.
Die Verwendung des PHP -MVC -Frameworks bietet viele Vorteile. Es bietet eine strukturierte Möglichkeit, Ihren Code zu organisieren und die Wartung und Skalierung zu erleichtern. Es bietet auch integrierte Funktionen und Bibliotheken für gemeinsame Aufgaben und verringert die Menge an Code, die Sie schreiben müssen. Darüber hinaus enthält das MVC -Framework häufig Sicherheitsfunktionen, die Ihre Anwendungen vor gemeinsamen Webanfälligkeiten schützen.
In PHP MVC fungiert der Controller als Vermittler zwischen dem Modell und der Ansicht. Wenn der Benutzer eine Anforderung stellt, interpretiert der Controller die Anforderung und ruft die entsprechende Modellfunktion auf, um die Daten zu verarbeiten. Anschließend aktualisiert die Ansicht, um Änderungen in den Daten widerzuspiegeln.
In PHP MVC wird die Benutzereingabe normalerweise vom Controller verarbeitet. Der Controller empfängt die Benutzereingabe, überprüft sie und übergibt es für die Verarbeitung an das Modell. Das Modell aktualisiert dann die Daten und benachrichtigt den Controller, was wiederum die Ansicht aktualisiert.
In PHP MVC werden Daten in der Ansicht mithilfe von PHP- und HTML -Code angezeigt. Der Controller ruft Daten aus dem Modell ab und übergibt sie an die Ansicht. Die Ansicht generiert HTML, um die Daten anzuzeigen.
In PHP MVC werden Daten im Modell durch Funktionen des Controllers aktualisiert. Diese Funktionen können Vorgänge wie das Erstellen, Lesen, Aktualisieren und Löschen von Daten umfassen.
Um Ihre PHP -MVC -Anwendung sicher zu machen, umfasst mehrere Schritte. Diese Schritte umfassen die Validierung und Reinigung der Benutzereingaben, die Verwendung vorbereiteter Anweisungen oder parametrisierte Abfragen, um die SQL-Injektion zu verhindern, und die Verwendung integrierter Sicherheitsfunktionen des MVC-Frameworks. Es ist auch wichtig, Ihr Rahmen und alle Abhängigkeiten auf dem neuesten Stand zu halten, um bekannte Schwachstellen zu verhindern.
Das obige ist der detaillierte Inhalt vonPHP Master | Das MVC -Muster und das PHP, Teil 1. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!