>백엔드 개발 >PHP 문제 >PHP에서 라우팅을 작성하는 방법에는 여러 가지가 있습니다.

PHP에서 라우팅을 작성하는 방법에는 여러 가지가 있습니다.

(*-*)浩
(*-*)浩원래의
2019-09-28 15:11:189562검색

라우팅의 기능은 정규 매칭 원칙에 따라 요청을 여러 컨트롤러에 배포하는 것입니다. 다음으로 (자리 표시자 없이) 정적 경로에 대한 콜백을 올바르게 호출할 수 있는 간단한 라우터를 구현합니다.

PHP에서 라우팅을 작성하는 방법에는 여러 가지가 있습니다.

경로 배포(권장 학습: PHP 비디오 튜토리얼)

PHP 기반 경로 배포는 기본적으로 URL의 경로를 사용하여 해당 컨트롤 클래스를 일치시키고 동시에 해당 메서드를 호출하여 관련 작업을 처리합니다.

<?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;;
    }
}

위 내용은 PHP에서 라우팅을 작성하는 방법에는 여러 가지가 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.