Heim > Backend-Entwicklung > PHP-Tutorial > Beispielcode für MVC-Musteranwendungsfähigkeiten in PHP

Beispielcode für MVC-Musteranwendungsfähigkeiten in PHP

怪我咯
Freigeben: 2023-03-13 17:58:01
Original
1405 Leute haben es durchsucht

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); 
}
Nach dem Login kopieren

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(); 
}
Nach dem Login kopieren

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(); 
}
Nach dem Login kopieren

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; 
   } 
}
Nach dem Login kopieren

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); 
}
Nach dem Login kopieren

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) 
   { 
       //在这里实现你的代码 
   } 
}
Nach dem Login kopieren

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新的特性,异常的处理 
   } 
}
Nach dem Login kopieren

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的一些属性值 
   } 
}
Nach dem Login kopieren

spezifische Seiten, z. B. die Anzeigeseite wissenschaftlicher Artikel
wird implementiert

class TechArticleView extends ArticleView 
{ 
   public function display() 
   { 
       //实现你的代码,调用Tech类和更多的DataBaseOperation子类 
   } 
}
Nach dem Login kopieren

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) 
{ 
       //如何处理异常就是你的事了 
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage