PHP简单实现路由Route功能-php教程

资源魔 23 0
关于由原生PHP写成的自力PHP框架,行使繁多入口文件完成门路的拜访。这时候咱们会遇到的重要成绩是:文件的互相蕴含,其次就是路由调配。当咱们没有行使成熟的PHP框架进行web开发时,咱们就会发现上述两个成绩会是很困扰咱们的成绩所正在。

成绩处理计划:

一、文件蕴含

php的文件蕴含有两种形式:require以及include,两个办法的区分正在于行使require蕴含文件当犯错时,会报出重大谬误,同时PHP剧本会中止运转;而行使include蕴含文件犯错时,会有正告,但PHP剧本依然会持续向下执行。同时两个办法都蕴含对应的xxx_once办法,能够防止”declare class”的成绩。以是普通应用文件蕴含的时分咱们只管即便应用include_once蕴含文件。

同时正在对于文件蕴含的门路成绩上,咱们能够行使设置全局变量的形式,依靠入口文件的相对门路,去寻觅其余门路文件。修正php.ini中的inclue_path门路当然也是另外一种形式,行使require以及include蕴含文件,如果是绝对门路的形式,起首会依据php.ini设置装备摆设文件中的include_path的设置寻觅。

二、路由调配

基于php的路由调配,本质下去说就是行使url中的path去婚配对应的管制类,同时挪用此中的办法进行相干操作的解决。

一言没有合上代码:

<?php
/**
 * Author:helen
 * CreateTime: 2016/07/27 10:26
 * Description:
 */
// 权限管制
include_once './auth.php';
// 使用入口文件
date_default_timezone_set("Asia/Shanghai");
header('Content-type: text/html;charset=utf-8');
// 名目根门路
define('BASEPATH', dirname(__FILE__));
// 调试模式
define('APP_DEBUG', True);
// 引入设置装备摆设文件
include_once BASEPATH . '/config/config.php';
// 路由管制
$router = include_once BASEPATH . '/config/router.php';
if ($_SERVER['HTTP_HOST'] !== 'xxx.com') {
    var_dump('以后host没有被容许');
} else {
    $request_path = str_replace('/index.php', '', $_SERVER['PHP_SELF']);
    $request_query = getCurrentQuery();
    if (array_key_exists($request_path, $router)) {
        $module_file = BASEPATH . $router[$request_path]['file_name'];
        $class_name = $router[$request_path]['class_name'];
        $method_name = $router[$request_path]['method_name'];
        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 '页面没有存正在';
    }
}

行使上述形式就可完成根本的PHP框架的路由调配。

保举教程:《PHP教程》

以上就是PHP简略完成路由Route性能的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!