So implementieren Sie die URL-Routing-Verteilungsfunktion in PHP

coldplay.xixi
Freigeben: 2023-03-05 13:18:01
Original
2498 Leute haben es durchsucht

So implementiert PHP die URL-Routenverteilungsfunktion: Fangen Sie zuerst den Pfad [/router/] in der Serverkonfiguration ab, implementieren Sie dann den Routenverteiler, erhalten Sie den angeforderten URI und schreiben Sie schließlich das Modul.

So implementieren Sie die URL-Routing-Verteilungsfunktion in PHP

【Verwandte Lernempfehlungen: php-Grafik-Tutorial

So implementieren Sie die URL-Routing-Verteilungsfunktion in PHP:

Der erste Schritt besteht darin, den Server zu konfigurieren. Intercept the /router/ path/router/路径进行拦截

So implementieren Sie die URL-Routing-Verteilungsfunktion in PHP

 

调用某个文件夹目录下的index.php

So implementieren Sie die URL-Routing-Verteilungsfunktion in PHP

So implementieren Sie die URL-Routing-Verteilungsfunktion in PHP

Rufen Sie die Seite index.php in einem bestimmten Ordnerverzeichnis auf. Das Verzeichnis befindet sich jetzt in separaten Dateien im Klassenverzeichnis Dieselbe Ebene wie der Router, wie in der folgenden Abbildung dargestellt:

Der zweite Schritt ist die Implementierung des Routenverteilers (index.php)

<!Doctype html>
 <html>
 <head>
 <title>路由测试~~</title>
 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 </head>
<body>
<?php
date_default_timezone_set("Asia/Shanghai");
 define("MODULE_DIR", "../class/");
 $_DocumentPath = $_SERVER[&#39;DOCUMENT_ROOT&#39;];
 $_FilePath = __FILE__;
 $_RequestUri = $_SERVER[&#39;REQUEST_URI&#39;]; 
 $_AppPath = str_replace($_DocumentPath, &#39;&#39;, $_FilePath);  //==>\router\index.php
 $_UrlPath = $_RequestUri;  //==>/router/hello/router/a/b/c/d/abc/index.html?id=3&url=http:
 $_AppPathArr = explode(DIRECTORY_SEPARATOR, $_AppPath);
 
 /**
 * http://192.168.0.33/router/hello/router/a/b/c/d/abc/index.html?id=3&url=http:
 * 
 * /hello/router/a/b/c/d/abc/index.html?id=3&url=http:
 */ 
 for ($i = 0; $i < count($_AppPathArr); $i++) {
   $p = $_AppPathArr[$i];
   if ($p) {
    $_UrlPath = preg_replace(&#39;/^\/&#39;.$p.&#39;\//&#39;, &#39;/&#39;, $_UrlPath, 1);
   }
 }
 
 $_UrlPath = preg_replace(&#39;/^\//&#39;, &#39;&#39;, $_UrlPath, 1);
 
 $_AppPathArr = explode("/", $_UrlPath);
 $_AppPathArr_Count = count($_AppPathArr);
 
 $arr_url = array(
  &#39;controller&#39; => &#39;index&#39;,
   &#39;method&#39; => &#39;index&#39;,
   &#39;parms&#39; => array()
 );
 
 $arr_url[&#39;controller&#39;] = $_AppPathArr[0];
 $arr_url[&#39;method&#39;] = $_AppPathArr[1];
 
 if ($_AppPathArr_Count > 2 and $_AppPathArr_Count % 2 != 0) {
   die(&#39;参数错误&#39;);
 } else {
   for ($i = 2; $i < $_AppPathArr_Count; $i += 2) {
     $arr_temp_hash = array(strtolower($_AppPathArr[$i])=>$_AppPathArr[$i + 1]);
     $arr_url[&#39;parms&#39;] = array_merge($arr_url[&#39;parms&#39;], $arr_temp_hash);
   }
 }
 
 $module_name = $arr_url[&#39;controller&#39;];
 $module_file = MODULE_DIR.$module_name.&#39;.class.php&#39;;
 $method_name = $arr_url[&#39;method&#39;];
 
 if (file_exists($module_file)) {
   include $module_file;
   
   $obj_module = new $module_name();
   
   if (!method_exists($obj_module, $method_name)) {
     die("要调用的方法不存在");
  } else {
     if (is_callable(array($obj_module, $method_name))) {
       $obj_module -> $method_name($module_name, $arr_url[&#39;parms&#39;]);
       
       $obj_module -> printResult();
     }
   }
   
 } else {
   die("定义的模块不存在");
 }
  
 ?>
 
</body>
 </html>
Nach dem Login kopieren

Rufen Sie die angeforderte URI ab und rufen Sie dann den zu ladenden Modulnamen ab und der Name der aufrufenden Methode. Machen Sie eine einfache Beurteilung der URI-Parameter. Dann können wir eine Datei mit dem Namen Hello.class.php definieren (beachten Sie, dass unter Linux zwischen Groß- und Kleinschreibung unterschieden wird). URL-Routing-Verteilungsfunktion...

Verwandte Lernempfehlung:
PHP-Programmierung

(Video)

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die URL-Routing-Verteilungsfunktion 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