Maison  >  Article  >  développement back-end  >  Il existe plusieurs façons d'écrire le routage en php

Il existe plusieurs façons d'écrire le routage en php

(*-*)浩
(*-*)浩original
2019-09-28 15:11:189447parcourir

La fonction du routage est de répartir les requêtes vers différents contrôleurs, sur la base du principe de matching régulier. Ensuite, nous implémentons un routeur simple qui peut appeler correctement des rappels pour les routes statiques (sans espaces réservés).

Il existe plusieurs façons d'écrire le routage en php

Distribution de routes (Apprentissage recommandé : Tutoriel vidéo PHP)

Distribution de routes basée sur PHP, essence Pour faire simple, il s'agit d'utiliser le chemin dans l'URL pour correspondre à la classe de contrôle correspondante, et en même temps d'appeler les méthodes qu'elle contient pour traiter les opérations associées.

<?php
// 权限控制
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;;
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn