教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 PHP简单实现路由Route功能

PHP简单实现路由Route功能

发布时间:2020-05-12   编辑:jiaochengji.com
教程集为您提供PHP简单实现路由Route功能等资源,欢迎您收藏本站,我们将为您提供最新的PHP简单实现路由Route功能资源
对于由原生PHP写成的独立PHP框架,利用单一入口文件实现路径的访问。这时我们会遇到的首要问题是:文件的相互包含,其次就是路由分配。当我们不利用成熟的PHP框架进行web开发时,我们就会发现上述两个问题会是很困扰我们的问题所在。

问题解决方案:

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教程》

以上就是PHP简单实现路由Route功能的详细内容,更多请关注教程集其它相关文章!

  • 本文转载于:CSDN,如有侵犯,请联系jquerycn@qq.com删除
  • 您可能感兴趣的文章:
    flask route装饰器如何理解
    Laravel 5.2 新特性隐式路由模型绑定功能使用例子
    PHP简单实现路由Route功能
    Laravel HTTP路由基本使用及路由参数
    Laravel 5.2 新特性多用户认证功能实现详解
    Lumen 5.2 HTTP 路由入门教程
    AngularJS“路由”的简介及用法介绍
    Laravel 5.2 新特性中间件组的定义及使用例子
    php实现简单的伪静态URL的机制介绍
    Laravel实现找回密码及密码重置的例子

    [关闭]
    ~ ~