MVC-Muster ist die Abkürzung für „Model-View-Controller“ und die chinesische Übersetzung lautet „Model-View-Controller“. MVC-Anwendungen bestehen immer aus diesen drei Teilen. Ein Ereignis (Ereignis) veranlasst den Controller, das Modell oder die Ansicht oder beide gleichzeitig zu ändern. Solange der Controller die Daten oder Eigenschaften der Modelle ändert, werden alle abhängigen Ansichten automatisch aktualisiert. Ebenso ruft die Ansicht jedes Mal, wenn der Controller die Ansicht ändert, Daten vom zugrunde liegenden Modell ab, um sich selbst zu aktualisieren. Das MVC-Muster wurde erstmals von der Smalltalk-Sprachforschungsgruppe vorgeschlagen und wird in Benutzerinteraktionsanwendungen verwendet. Es gibt viele Ähnlichkeiten zwischen der Smalltalk-Sprache und der Java-Sprache. Beide sind objektorientierte Sprachen. Natürlich hat SUN das MVC-Muster als Architekturmuster für die Entwicklung von Webanwendungen im Beispiel „Petstore“ empfohlen Anwendung. Das MVC-Muster ist ein Architekturmuster, das tatsächlich die Zusammenarbeit anderer Muster erfordert. Im J2EE-Modusverzeichnis wird normalerweise der Service-to-Worker-Modus implementiert, und der Service-to-Worker-Modus kann aus dem zentralisierten Controller-Modus, dem Dispatcher-Modus und dem Page Helper-Modus bestehen. Struts implementiert nur die View- und Controller-Teile von MVC. Der Model-Teil muss von Entwicklern selbst implementiert werden, damit Entwickler Model auf das Struts-Framework anwenden können. Es verwaltet seinen eigenen Status und verwaltet alle Vorgänge am Status. Das System selbst weiß nicht, wer seine eigene Ansicht und den Controller verwendet ist auch für die Benachrichtigung der entsprechenden Ansicht verantwortlich.
Ansicht stellt eine visuelle Darstellung der im Verwaltungsmodell enthaltenen Daten dar. Ein Modell kann mehr als eine Ansicht haben, aber das ist in Swing selten der Fall.
Der Controller verwaltet die Steuerung der Interaktion zwischen dem Modell und dem Benutzer. Es bietet einige Methoden zum Umgang mit Situationen, in denen sich der Zustand des Modells ändert.
Verwendung des MVC-Musters in PHP
Lassen Sie mich zunächst ein Beispiel geben:
Eine einfacheArtikelanzeigeSystem
In einem einfachen Zeitraum gehen wir davon aus Dieses Artikelsystem dient nur dem Lesen, was bedeutet, dass in diesem Beispiel nicht die Veröffentlichung des Artikels erfolgt, der jetzt beginnt.
Da es sich nur um das Lesen der Datenbank handelt, habe ich zwei Schnittstellen definiert
Interface DataOperation { public function select($info); public function selectNum($info); }
Die obige Schnittstelle definiert die Schnittstelle zum Lesen von Daten, und die Auswahlmethode gibt das Erforderliche zurück Artikel. Die Methode selectNum gibt die Gesamtzahl der Artikel zurück, die für die Seitenanzeige verwendet wird. $info ist ein Array zum Speichern von Abfragebedingungen
Interface DataSource { public static function getInstance(); }
Hier gehen wir davon aus, dass wir eine Datenbank betreiben, DataSource eine Schnittstelle definiert und alle Instanzklassen, die diese Schnittstelle implementieren, ein statisches Objekt erhalten
Interface Controller { public function pop(); public function push(); public function execute(); } Interface View { public function display(); }
Okay, lass es uns implementieren
Im Folgenden wird eine Klasse zum Implementieren der DataSource-Schnittstelle definiert. Diese Klasse verwendet das Einzelfallmuster
class DataBaseSource implements DataSource { public static $instance = null; public static function getInstance() { if(self::$instance == null) { self::$instance == new PDO("mysql:host=localhost;dbname=article","root","123456"); } return self::$instance; } }
Definieren Sie eine abstrakte Klasse, um DataOperation zu implementieren. Wir möchten eine Datenbankverbindung teilen, also initialisiere ich das Datenbankobjekt in der abstrakten Klasse, damit alle Unterklassen dieses Objekt teilen können
abstract class DataBaseOperation implements DataOperation { protected $db = null; public function construct() { $this->db = DataBaseSource::getInstance(); } public function select($info); }
Jetzt werde ich eine Geschäftsunterklasse schreiben, um die abstrakte Klasse DataBaseOperation zu implementieren
class Tech extends DataBaseOperation { public function select($info) { //在这里实现你的代码 } public function selectNum($info) { //在这里实现你的代码 } }
Wir haben die Geschäftslogikschicht implementiert, und das Folgende ist die Kontrollebene
class ViewController implements Controller { private $mod = array(); public function push($key,$value); { //实现你的代码,将类注册进$this->mod; } public function pop($key) { //实现你的代码,将$this->mod[$key]值为null; } public function execute($key) { //在这里实现你的代码,生成实例.注意利用php5新的特性,异常的处理 } }
Okay, hier ist die Präsentationsebene, in der die Schnittstellenansicht
abstract ArticleView implements View { protected $smarty = null; public function construct() { $this->smarty = new Smarty(); ///下面你可以定义smarty的一些属性值 } }
spezifische Seiten, z. B. die Anzeigeseite wissenschaftlicher Artikel
wird implementiert
class TechArticleView extends ArticleView { public function display() { //实现你的代码,调用Tech类和更多的DataBaseOperation子类 } }
Okay, hier ist der Haupteingang index.php
try { $viewController = new ViewController(); $viewController->push("tech",TechArticleView); //持续的增加 $mod = $_GET["mod"]:$_GET["mod"]:$_POST["mod"]; //最后 $viewController->execute($key); } catch( Exception $e) { //如何处理异常就是你的事了 }
Das obige ist der detaillierte Inhalt vonBeispielcode für MVC-Musteranwendungsfähigkeiten in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!