PHP implementiert einfach die Routing-Route-Funktion

Guanhui
Freigeben: 2023-04-08 15:22:02
nach vorne
12609 Leute haben es durchsucht

Für unabhängige PHP-Frameworks, die in nativem PHP geschrieben sind, wird eine einzelne Eintragsdatei verwendet, um den Pfadzugriff zu erreichen. Das Hauptproblem, auf das wir zu diesem Zeitpunkt stoßen werden, ist die gegenseitige Einbeziehung von Dateien und die anschließende Routing-Verteilung. Wenn wir das ausgereifte PHP-Framework nicht für die Webentwicklung verwenden, werden wir feststellen, dass die beiden oben genannten Probleme für uns sehr problematisch sein werden.

Problemlösung:

1. Dateieinbindung

Es gibt zwei Möglichkeiten, PHP-Dateien einzubinden: require und include. Der Unterschied zwischen den beiden Methoden Wenn bei der Verwendung von „require“ zum Einschließen einer Datei ein Fehler auftritt, wird ein schwerwiegender Fehler gemeldet und das PHP-Skript wird nicht mehr ausgeführt. Wenn bei der Verwendung von „include“ zum Einschließen einer Datei ein Fehler auftritt, wird eine Warnung angezeigt, das PHP-Skript wird jedoch weiterhin ausgeführt ausführen. Gleichzeitig enthalten beide Methoden die entsprechende xxx_once-Methode, wodurch das Problem der „Klasse deklarieren“ vermieden werden kann. Daher versuchen wir bei der allgemeinen Verwendung der Dateieinbindung, include_once zu verwenden, um die Datei einzuschließen.

Gleichzeitig können wir in Bezug auf das Pfadproblem der Dateieinbindung die Methode des Festlegens globaler Variablen verwenden, um andere Pfaddateien basierend auf dem absoluten Pfad der Eintragsdatei zu finden. Das Ändern des include_path-Pfads in php.ini ist natürlich eine andere Möglichkeit. Verwenden Sie require und include, um die Datei einzuschließen. Wenn es sich um einen relativen Pfad handelt, wird er zuerst gemäß der include_path-Einstellung in der php.ini-Konfigurationsdatei gefunden.

2. Routenverteilung

Bei der PHP-basierten Routenverteilung wird im Wesentlichen der Pfad in der URL verwendet, um die entsprechende Steuerklasse abzugleichen und die darin enthaltenen Methoden aufzurufen Operationen.

Der Code ohne ein Wort zu sagen:

<?php
/**
 * Author:helen
 * CreateTime: 2016/07/27 10:26
 * Description:
 */
// 权限控制
include_once &#39;./auth.php&#39;;
// 应用入口文件
date_default_timezone_set("Asia/Shanghai");
header(&#39;Content-type: text/html;charset=utf-8&#39;);
// 项目根路径
define(&#39;BASEPATH&#39;, dirname(__FILE__));
// 调试模式
define(&#39;APP_DEBUG&#39;, True);
// 引入配置文件
include_once BASEPATH . &#39;/config/config.php&#39;;
// 路由控制
$router = include_once BASEPATH . &#39;/config/router.php&#39;;
if ($_SERVER[&#39;HTTP_HOST&#39;] !== &#39;xxx.com&#39;) {
    var_dump(&#39;当前host不被允许&#39;);
} else {
    $request_path = str_replace(&#39;/index.php&#39;, &#39;&#39;, $_SERVER[&#39;PHP_SELF&#39;]);
    $request_query = getCurrentQuery();
    if (array_key_exists($request_path, $router)) {
        $module_file = BASEPATH . $router[$request_path][&#39;file_name&#39;];
        $class_name = $router[$request_path][&#39;class_name&#39;];
        $method_name = $router[$request_path][&#39;method_name&#39;];
        if (file_exists($module_file)) {
            include $module_file;
            $obj_module = new $class_name();
            if (!method_exists($obj_module, $method_name)) {
                die("要调用的方法不存在");
            } else {
                if (is_callable(array($obj_module, $method_name))) {
                    $obj_module->$method_name($request_query, $_POST);
                }
            }
        } else {
            die("定义的模块不存在");
        }
    } else {
        echo &#39;页面不存在&#39;;
    }
}
Nach dem Login kopieren

Mit der obigen Methode kann die Routing-Verteilung des grundlegenden PHP-Frameworks realisiert werden.

Empfohlenes Tutorial: „PHP-Tutorial

Das obige ist der detaillierte Inhalt vonPHP implementiert einfach die Routing-Route-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:csdn.net
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!