PHP如何实现路由Route功能?

对于由原生PHP写成的独立PHP框架,利用单一入口文件实现路径的访问。这时我们会遇到的首要问题是:文件的相互包含,其次就是路由分配。当我们不利用成熟的PHP框架进行web开发时,我们就会发现上述两个问题会是很困扰我们的问题所在。

创新互联建站长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为钟祥企业提供专业的成都做网站、成都网站制作,钟祥网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

问题解决方案:

1、文件包含

php的文件包含有两种方式:require和include,两个方法的区别在于利用require包含文件当出错时,会报出严重错误,同时PHP脚本会停止运行;而利用include包含文件出错时,会有警告,但PHP脚本仍然会继续向下执行。同时两个方法都包含对应的xxx_once方法,可以避免”declare class”的问题。所以一般使用文件包含的时候我们尽量使用include_once包含文件。

同时在关于文件包含的路径问题上,我们可以利用设置全局变量的方式,依托入口文件的绝对路径,去寻找其他路径文件。修改php.ini中的inclue_path路径当然也是另一种方式,利用require和include包含文件,假如是相对路径的方式,首先会根据php.ini配置文件中的include_path的设置寻找。

2、路由分配

基于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简单实现路由Route功能的详细内容,更多请关注创新互联其它相关文章!

新闻标题:PHP如何实现路由Route功能?
当前地址:https://www.cdcxhl.com/article36/gcjisg.html

成都网站建设公司_创新互联,为您提供自适应网站微信公众号电子商务定制网站品牌网站制作Google

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站建设网站维护公司