Heim  >  Artikel  >  Backend-Entwicklung  >  PHP implementiert einfaches MVC

PHP implementiert einfaches MVC

angryTom
angryTomnach vorne
2019-10-12 16:03:324377Durchsuche

Die Verwendung von MVC in PHP wird immer beliebter, insbesondere in einigen Open-Source-Frameworks. MVC reicht für die meisten Situationen aus, es gibt jedoch Situationen, in denen es nicht geeignet ist, z. B. bei relativ einfachen persönlichen Blogs. Bei Blogs mit nur wenigen hundert Artikeln fühlt sich die Verwendung von MVC etwas zu kompliziert an Artikel: MVC ist für die meisten Situationen nicht geeignet. Bei Portal-Websites wie Sina wird bei Verwendung von MVC eine große Anzahl von Dateien geladen, und die Auswirkungen auf die Geschwindigkeit sind nicht akzeptabel. Maple Bamboo Dream stellt die Grundprinzipien von MVC und eine einfache Implementierung vor. Die folgende Einführung ist für die PHP-Entwicklung geeignet.

MVC in PHP (empfohlenes Lernen: PHP-Video-Tutorial)

MVC[1] ist eine Softwarearchitektur in der Softwareentwicklung. Aus PHP-Sicht ist MVC etwas anders.

Modell (Modell), die Realisierung von Programmanwendungsfunktionen und die Realisierung von Programmlogik. Verantwortlich für Datenmanagement und Datengenerierung in PHP.

Ansicht (Ansicht), grafische Schnittstellenlogik. Verantwortlich für die Ausgabe in PHP, Umgang mit dem Aufruf von Vorlagen und erforderlichen Ressourcendateien.

Verantwortlicher (Controller), verantwortlich für die Weiterleitung von Anfragen und die Bearbeitung von Anfragen. In PHP wird anhand der Anfrage der aufzurufende View und die zu verwendenden Daten ermittelt.

Warum MVC verwenden

Die Hauptfunktion von MVC besteht darin, Code zu schichten und zu klassifizieren.

Der Hauptzweck von MVC besteht darin, das Problem der Trennung von Entwicklungs- und Designarbeit in der Webentwicklung zu lösen und die Arbeit relativ unabhängig zu machen.

Dabei haben wir auch einige weitere Vorteile entdeckt: Die Verzeichnisstruktur der Website ist übersichtlicher, die Website ist einfacher zu warten und zu erweitern und Module können wiederverwendet werden.

MVC-Implementierung

URL anfordern

Vereinbaren Sie zunächst die URL, wenn Sie die Seite anfordern, und implementieren Sie sie mit dem Folgende Struktur:

localhost/index.php?c=demo&a=index¶m=welcome

Wenn Sie eine schönere URL-Struktur erhalten möchten, können Sie diese optimieren. Da diese URL-Strukturoptimierung wenig mit diesem Artikel zu tun hat, werde ich sie später teilen.

Wie aus den obigen Parametern ersichtlich ist, ist die Datei, auf die zugegriffen wird, index.php, die auch drei Parameter enthält: c, a und param.

MVC-Verzeichnisstruktur

Planen Sie als Nächstes die Verzeichnisstruktur von MVC wie folgt:

 /*
 ├─www                       # 网站根目录
 │  ├─controller             # 控制器目录
 │  │  ├─democontroller.php  # demo控制器
 │  ├─model                  # 模型目录
 │  │  ├─model.php           # model模型
 │  ├─view                   # 视图目录
 │  │  ├─index.php           # index视图
 │  ├─index.php              # 入口文件
 */

Controller Controller

Fügen Sie den folgenden Code zur Datei „controller/democontroller.php“ hinzu.

 // controller/democontroller.php
 class DemoController
 {
     public function index()
     {
     echo 'hello world';
     }
 }// End of the class DemoController
 // End of file democontroller.php

In dieser Datei ist nur eine DemoController-Klasse definiert und sie enthält nur eine Indexmethode zur Ausgabe von „Hallo Welt“.

Fügen Sie den folgenden Code zur Eintragsdatei index.php hinzu.

 //index.php
 require('controller/democontroller.php');
 $controller = new DemoController();
 $controller->index();
 // End of index.php

Verwenden Sie die oben vereinbarte URL im Browser, um auf die Ausgabe „Hallo Welt“ zuzugreifen und diese anzuzeigen. Wenn die von Ihnen angeforderte URL natürlich nicht dieser entspricht, können Sie, wie unten gezeigt, die gleiche Ausgabe erhalten.

localhost/index.php?c=abc

Es wurde festgestellt, dass die Parameter in der URL keine Auswirkung haben.

Wenn Sie die unten stehende URL verwenden, um darauf zuzugreifen, können Sie damit rechnen, dass keine Ausgabe erfolgt.

localhost/controller/democontroller.php

Sie sehen, wenn Sie auf diese Website zugreifen und die richtigen Ergebnisse erhalten möchten, können Sie derzeit nur über index.php darauf zugreifen, weshalb sie als Eintragsdatei bezeichnet wird . Jetzt können Sie unabhängig von den Parametern nur auf dieselbe Seite zugreifen. Wie entscheiden Sie sich also für die Anzeige unterschiedlicher Ergebnisse? Oder wie wäre es mit einem anderen Controller?

Eintragsdatei verbessern

Im Folgenden werden die Parameter in der URL verwendet, um zu entscheiden, welcher Controller verwendet werden soll.

  //index.php
 // get runtime controller prefix
 $c_str = $_GET['c'];
 // the full name of controller
 $c_name = $c_str.'controller';
 // the path of controller
 $c_path = 'controller/'.$c_name.'.php';
 // get runtime action
 $method = $_GET['a'];
 // load controller file
 require($c_path);
 // instantiate controller
 $controller = new $c_name;
 // run the controller  method
 $controller->$method();
 // End of index.php

Verwenden Sie auf ähnliche Weise die oben vereinbarte URL, um im Browser darauf zuzugreifen und die Ausgabe „Hallo Welt“ anzuzeigen. Kommentare im Code erläutern den Zweck jedes Schritts. Natürlich können Sie verschiedene Controller und ihre Methoden aufrufen, indem Sie die c- und a-Werte in den URL-Parametern ändern, um unterschiedliche Ergebnisse auszugeben.

Ansicht anzeigen

Vorne wird nur der Controller-Controller verwendet, und in der Eintragsdatei index.php werden verschiedene Controller dynamisch aufgerufen. Wenn Sie dann die Ansicht verbinden, wird die Trennung angezeigt.

 // view/index.php
 class Index {
     public function display($output) {
         // ob_start();
         echo $output;
     }
 }
 // End of index.php

Die Index-Methode ist in der Datei index.php im Ansichtsverzeichnis definiert und es gibt nur eine display()-Funktion, die für die Ausgabe der an sie übergebenen Variablen verantwortlich ist.

Ändern Sie die Controller-Datei unten.

 // controller/democontroller.php
 class DemoController
 {
     private $data = 'Hello furzoom!';
     public function index()
     {
     //echo 'hello world';
     require('view/index.php');
     $view = new Index();
     $view->display($data);
     }
 }// End of the class DemoController
 // End of file democontroller.php

definiert eine private Datenvariable im Controller. Die index()-Methode gibt nicht mehr direkt aus, sondern verwendet das Ansichtsobjekt, um die Ausgabe zu verarbeiten. Zu diesem Zeitpunkt sehen Sie beim Zugriff über die oben vereinbarte URL die Ausgabe:

Hello furzoom!

Je nach Anforderung können verschiedene Ansichtsklassen aufgerufen werden, um Daten in unterschiedlichen Formen anzuzeigen. Dadurch wird die Rolle der Ansicht gestärkt, und Designer können die Seite nur für die Ansicht entwerfen.

Modell

Das Obige scheint sehr cool zu sein, aber welche Art von Inhalt angezeigt wird, wird direkt im Controller angegeben. Ich hoffe, dass der Inhalt auch vom angegeben wird URL, also überlassen Sie die Datenverarbeitung dem Modell.

 // model/model.php
 class Model {
     private $data = array(
                 'title' => 'Hello furzoom',
                 'welcome' => 'Welcome to furzoom.com',
                 );
     public function getData($key) {
         return $this->data[$key];
     }
 }
 // End of model.php

Die Ansichtsdatei model.php definiert eine Model-Klasse, die eine getData()-Methode definiert, um die angeforderten Daten zurückzugeben.

Ändern Sie außerdem die Eintragsdatei index.php wie folgt:

  //index.php
 // get runtime controller prefix
 $c_str = $_GET['c'];
 // the full name of controller
 $c_name = $c_str.'controller';
 // the path of controller
 $c_path = 'controller/'.$c_name.'.php';
 // get runtime action
 $method = $_GET['a'];
 // get runtime parameter
 $param = $_GET['param'];
 // load controller file
 require($c_path);
 // instantiate controller
 $controller = new $c_name;
 // run the controller  method
 $controller->$method($param);
 // End of index.php

Fügen Sie einen Parameter $param hinzu und verwenden Sie ihn als Methodenaufrufparameter des Controllers.

Sie müssen auch die Controller-Methode ändern, um unterschiedliche Daten basierend auf unterschiedlichen Parametern zu erhalten.

 // controller/democontroller.php
 class DemoController
 {
     // private $data = 'Hello furzoom!';
     function index($param)
     {
     // echo 'hello world';
         require('view/index.php');
     require('model/model.php');
     $model = new Model();
     $view = new Index();
     $data = $model->getData($param);
     $view->display($data);
     }
 }// End of the class DemoController
 // End of file democontroller.php

Enthält die erforderlichen Ansichtsdateien und Modelldateien, generiert dann die Ansichts- und Modelldateien, ruft dann die Daten über das Modellobjekt ab und verwendet dann das Ansichtsobjekt, um die erhaltenen Daten auszugeben .

此时,在浏览器中使用上面的约定的URL进行访问,将得到输出如下:

Welcome to furzoom.com

至此PHP的MVC模式已经基本介绍完成了,剩余的工作就是根据需要进行添加扩充了,很简单吧!!

Das obige ist der detaillierte Inhalt vonPHP implementiert einfaches MVC. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:PHP-BetriebsdatenbankNächster Artikel:PHP-Betriebsdatenbank