Heutzutage ist PHP eine weit verbreitete Programmiersprache. Solange Sie PHP entwickeln, können Sie nicht auf ein PHP-Framework verzichten. Das Entwicklungsframework bietet uns flexible Entwicklungsmethoden, MVC-Schichtentrennung, Geschäftsentkopplung usw. Dadurch wird unsere Entwicklung schneller und bequemer. Viele Menschen wissen jedoch nur, wie man das Framework verwendet, verstehen aber nie, wie die Interna des Frameworks implementiert werden. Dies trägt nicht zur Verbesserung unserer Programmierfähigkeiten bei. In diesem Artikel beginnen wir mit einer einfacheren Funktion, nämlich der Routing-Funktionsimplementierungsmethode des allgemeinen Single-Entry-Box-MVC-Frameworks. Die Routen sind alle wie folgt aufgebaut: localhost/MVC/index.php/classname/functionname/var1/var2. Die index.php wird hier normalerweise als Eintragsdatei bezeichnet. Für den Server greifen Sie hier nur auf den nach index.php aufgerufenen Controller und die darin enthaltenen Methoden zu. Auch die Werteübergabe wird innerhalb des Frameworks auf Basis der PHP-Ebene implementiert. Als nächstes implementieren wir einfach die Routing-Funktion des MVC-Frameworks.
1. Legen Sie zunächst die MVC-Dateistruktur fest
Probieren Sie es aus und sehen Sie, wie wir auf die Controller-Datei zugreifen können.
Geben Sie folgenden Inhalt in index.php ein:
<?php /** * MVC路由功能简单实现 * @desc 简单实现MVC路由功能 * $Author: Zhihua_W */ //打印出所有的服务器变量 print_r($_SERVER); ?>
Geben Sie dann die Zugangsadresse ein, um es zu versuchen. Hier verwende ich die lokale Umgebung und die Adresse, auf die ich zugreife, lautet: localhost/MVC/index.php/class/function/var1. Nachfolgend poste ich die beiden wichtigsten Variablen:
[REQUEST_URI] => /MVC/index.php/class/function/var1 [SCRIPT_NAME] => /MVC/index.php
2. Inhalt der Index.php-Datei
<?php /** * MVC路由功能简单实现 * @desc 简单实现MVC路由功能 * $Author: Zhihua_W */ //定义application路径 define('APPPATH', trim(__DIR__ . '/')); //获得请求地址 $root = $_SERVER['SCRIPT_NAME']; $request = $_SERVER['REQUEST_URI']; $URI = array(); //获得index.php 后面的地址 $url = trim(str_replace($root, '', $request), '/'); //如果为空,则是访问根地址 if (empty($url)) { //默认控制器和默认方法 $class = 'index'; $func = 'welcome'; } else { $URI = explode('/', $url); //如果function为空 则默认访问index if (count($URI) < 2) { $class = $URI[0]; $func = 'index'; } else { $class = $URI[0]; $func = $URI[1]; } } //把class加载进来 include(APPPATH . '/' . 'application/controllers /' . $class . '.php'); //实例化->将控制器首字母大写 $obj = ucfirst($class); call_user_func_array( //调用内部function array($obj, $func), //传递参数 array_slice($URI, 2) ); ?>
3 . Fügen Sie die folgenden 2 Dateien (index.php, hello.php) in application/controllers
① index.php
<?php * MVC路由功能简单实现 * @desc 简单实现MVC路由功能 * $Author: Zhihua_W */ class Index { function welcome() { # code... echo "default covtroller!"; } } ?>
② hello php hinzu >
<?php /** * MVC路由功能简单实现 * @desc 简单实现MVC路由功能 * $Author: Zhihua_W */ class Hello{ public function index(){ echo "hello world!"; } public function name($name){ echo "hello ".$name; } } ?> ] view plain copy <?php /**
Testen Sie
Testen Sie, ob Sie darauf zugreifen können. Gemäß der oben genannten Routing-Struktur. Wir können es versuchen. Durch Tests werden wir feststellen, dass der Zugriff normal ist, die Namensmethode innerhalb der Hallo-Klasse korrekt aufgerufen wird und dann der Parameter jack übergeben wird. Versuchen Sie, den Funktionsnamen nicht erneut einzugeben, um zu sehen, ob der Index standardmäßig aufgerufen werden kann. Die Antwort lautet ebenfalls „Ja“. Der letzte Schritt besteht darin, die Root-Adresse zu besuchen und sicherzustellen, dass sie auch korrekt dem Standard-Controller zugeordnet ist. (Die Bilder der Testergebnisse werden ohne Screenshots gepostet.) Der obige Fall wurde erklärt. Auf diese Weise ist eine einfache MVC-Routing-Funktion abgeschlossen. Verwandte Empfehlungen:MVC-Programmierung in PHP verstehen – Einführung in das MVC-Framework
Erstellen Sie Ihr eigenes MVC-Framework mit PHP
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Routing-Funktion des MVC-Frameworks von PHP.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!