2019独角兽企业重金招聘Python工程师标准>>>

在PHP中,利用单一入口文件实现路径的访问,实现形如 http://localhost/project/index.php/module/method/param_key/param_val 的访问路由

module:模块名称(类)

method:模块方法

param_key:参数名称

param_val:参数值

一、新建项目 route

在 route 下新 index.php,代码如下

<?php error_reporting(0);  define(DIR_CONTROLLER, 'controller/'); // 定义控制器目录date_default_timezone_set("Asia/Shanghai");  $_DocumentPath = $_SERVER['DOCUMENT_ROOT'];  $_RequestUri = $_SERVER['REQUEST_URI'];  $_UrlPath = $_RequestUri;  $_FilePath = __FILE__;  $_AppPath = str_replace($_DocumentPath, '', $_FilePath);    //==>\route\index.php  $_AppPathArr = explode(DIRECTORY_SEPARATOR, $_AppPath);  for ($i = 0; $i < count($_AppPathArr); $i++) {  $p = $_AppPathArr[$i];  if ($p) {  $_UrlPath = preg_replace('/^\/'.$p.'\//', '/', $_UrlPath, 1);  }  }  $_UrlPath = preg_replace('/^\//', '', $_UrlPath, 1);  $_AppPathArr = explode("/", $_UrlPath);  $_AppPathArr_Count = count($_AppPathArr);   $arr_url = array(  'controller' => 'Index',  'method' => 'index',  'parms' => array()  );  $arr_url['controller'] = ucfirst($_AppPathArr[0]);  // 模块名称,首字母转为大写$arr_url['method'] = $_AppPathArr[1];  // 获取参数if ($_AppPathArr_Count > 2 and $_AppPathArr_Count % 2 != 0) {  //die('参数错误');  } else {  for ($i = 2; $i < $_AppPathArr_Count; $i+=2) {  $arr_temp_hash = array(strtolower($_AppPathArr[$i])=>$_AppPathArr[$i + 1]);  $arr_url['parms'] = array_merge($arr_url['parms'], $arr_temp_hash);  }  }   $module_name = $arr_url['controller'];  $module_file = DIR_CONTROLLER.$module_name.'.class.php';  $method_name = $arr_url['method'];  if (file_exists($module_file)) {  include $module_file;  $obj_module = new $module_name();  if (!method_exists($obj_module, $method_name)) {  die("要调用的方法不存在");  } else {  if (is_callable(array($obj_module, $method_name))) {  $obj_module -> $method_name($arr_url['parms']);   }  }        } else {  die("定义的模块不存在");  }
?>

二、在项目目录下新建 controller 文件夹,并在该文件夹下新建 Welcome.class.php 文件,代码如下

<?php class Welcome{public function index($param){echo 'Hello World!';}}
?>

三、地址栏输入 http://localhost/route/index.php/welcome/index/

页面输出 “ Hello World! ”

转载于:https://my.oschina.net/u/3460260/blog/1832005

php 简单路由实现相关推荐

  1. Android—简单路由框架实践

    简单路由框架实现: 1.目录结构 annotation和factory-compiler是两个java library,分别负责接口还有APT. 2.依赖关系 app作为主工程依赖所有 impleme ...

  2. centos 重启网卡_CentOS6 网络管理之网卡配置及简单路由设置

    CentOS6中关于网络配置的命令有很多,本文将介绍几个平时最长用的几个命令,以及网卡IP地址的配置和简单路由配置. 1.经常使用的查看IP地址命令为 ifconfig,不跟参数的情况下默认查看所有已 ...

  3. SpringCloud 微服务网关Gateway介绍及简单路由配置

    概述:什么是微服务网关?为了解决用户客户端在调用微服务系统中的多个消费者工程接口时,需要维护非常多的消费者应用接口地址等信息,以及可能存在不同应用见的调用跨域等问题,微服务网关组件随即出现.网关作为用 ...

  4. Express简单路由使用

    Express简单路由使用

  5. include 路由 php,PHP简单路由

    define('BASE_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);//系统根目录 define('MODULE_PATH', BASE_PATH.' ...

  6. linux之用route命令看简单路由信息

    1.我们在linux上简单看路由信息使用下面命令 route -n

  7. Spring Cloud Gateway –配置简单路由

    可以将Spring Cloud Gateway视为Spring Cloud Netflix Zuul项目的后续产品,并有助于在微服务环境中实现Gateway模式 . 它建立在 Spring Boot ...

  8. Javascript实现前端简单路由

    http://www.helloweba.com/view-blog-385.html WEB开发中路由概念并不陌生,我们接触到的有前端路由和后端路由.后端路由在很多框架中是一个重要的模块,如Thin ...

  9. 计算机网络学习1:packet tracer的简单路由设置(学习记录)

    一:目标. 用packet tracer 构建简单的网络,理解IP协议. 二:步骤. 1.路由连接. 2.router0设置. 3.router1设置. 4.pc0 ping router0. 5.p ...

最新文章

  1. SQL基础---增删查询操作
  2. 云计算情报局预告|告别 Kafka Streams,让轻量级流处理更加简单
  3. RS(纠删码)技术浅析及Python实现
  4. 在VNC远程桌面环境Xfce4中Tab键失效的解决方法
  5. spoj 2 Prime Generator
  6. 考研山东省的计算机学校有哪些,山东考研哪个学校好考
  7. (转)配置Spring管理的bean的作用域
  8. sql server 分区_使用分区归档SQL Server数据
  9. leetcode(153)寻找旋转排序数组中的最小值
  10. Npm更新移除包的规则
  11. mysql 通过ssh通道安全连接数据库
  12. 一个好用的用于前端的字体图标库
  13. svn拉取文件合并_svn 创建分支、合并分支、分支与分支合并
  14. 用python来开发webgame服务端(2)
  15. Proxmox VE 配置桌面虚拟化
  16. 二级c语言笔试试题及答案,1996年9月全国计算机等级考试二级C语言笔试试题及答案...
  17. Ouroboros:A Provably Secure Proof-of-Stake Blockchain Protocol 学习总结
  18. 成功解决RecursionError: maximum recursion depth exceeded
  19. 2021-金三银四跳槽-还愿
  20. windows批处理命令教程

热门文章

  1. Latent dirichlet allocation note
  2. 矩阵分析与多元统计11 广义vec算子与devec算子
  3. UA MATH575B 数值分析下III 图像恢复
  4. Java虚拟机new和newarray相关指令学习
  5. 超图使用服务管理页面发布服务图解
  6. Netbeans学习总结
  7. 百度地图API开发概述
  8. JSP标准标签库JSTL总结
  9. Communications link failure
  10. 2.CCGridAction(3D效果),3D反转特效,凸透镜特效,液体特效,3D翻页特效,水波纹特效,3D晃动的特效,扭曲旋转特效,波动特效,3D波动特效...