$APP_PATH= str_replace($_SERVER['DOCUMENT_ROOT'], '', __FILE__);

$SE_STRING=str_replace($APP_PATH, '', $_SERVER['REQUEST_URI']);    //计算出index.php后面的字段 index.php/controller/methon/id/3

$SE_STRING=trim($SE_STRING,'/');

//echo $SE_STRING.'
';

//这里需要对$SE_STRING进行过滤处理。

$ary_url=array(

'controller'=>'index',

'method'=>'index',

'pramers'=>array()

);

//var_dump($ary_url);

$ary_se=explode('/', $SE_STRING);

$se_count=count($ary_se);

//路由控制

if($se_count==1 and $ary_se[0]!='' ){

$ary_url['controller']=$ary_se[0];

}else if($se_count>1){//计算后面的参数,key-value

$ary_url['controller']=$ary_se[0];

$ary_url['method']=$ary_se[1];

if($se_count>2 and $se_count%2!=0){ //没有形成key-value形式

die('参数错误');

}else{

for($i=2;$i < $se_count;$i=$i+2){

$ary_kv_hash=array(strtolower($ary_se[$i])=>$ary_se[$i+1]);

$ary_url[pramers]=array_merge($ary_url[pramers],$ary_kv_hash);

}

}

}

$module_name=$ary_url['controller'];

$module_file=MODULE_DIR.$module_name.'.class.php';

//echo $module_file;

$method_name=$ary_url['method'];

if(file_exists($module_file)){

include($module_file);

$obj_module=new $module_name();    //实例化模块m

if(!method_exists($obj_module, $method_name)){

die('方法不存在');

}else{

if(is_callable(array($obj_module, $method_name))){    //该方法是否能被调用

//var_dump($ary_url[pramers]);

$get_return=$obj_module->$method_name($ary_url[pramers]);    //执行a方法,并把key-value参数的数组传过去

if(!is_null($get_return)){ //返回值不为空

var_dump($get_return);

}

}else{

die('该方法不能被调用');

}

}

}

else

{

die('模块文件不存在');

}

?>

php关于路由,PHP URL路由类实例相关推荐

  1. Asp.Net MVC2.0 Url 路由入门---实例篇

    本篇主要讲述Routing组件的作用,以及举几个实例来学习Asp.Net MVC2.0 Url路由技术. 接着上一篇开始讲,我们在Global.asax中注册一条路由后,我们的请求是怎么转到相应的Vi ...

  2. ASP.NET 4的Demo实践:URL路由改进支持

    从.NET框架3.5 SP1开始,微软推出了ASP.NET路由支持,从而实现了特定资源的URL与其对应的Web服务器上的物理文件之间的彻底解耦.借助于ASP.NET路由支持,开发人员可以定义一组路由规 ...

  3. django URL路由基础

    URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除此之外的任何URL都不被 ...

  4. 精进不休 .NET 4.0 (2) - asp.net 4.0 新特性之url路由

    [索引页] [源码下载] 精进不休 .NET 4.0 (2) - asp.net 4.0 新特性之url路由, 自定义CacheProvider, 新增的表达式<%: expression %& ...

  5. Django基础-Web框架-URL路由

    Django基础-Web框架-URL路由 一.Django基础–Web框架 MVC和MTV框架 MVC 把Web应用分为模型(M).视图(V).控制器(C)三层,他们之间以一种插件式的,松耦合的方式联 ...

  6. MVC中的URL路由(一)

    URL路由系统通过对请求地址进行解析从而得到以目标Controller名称为核心的路由数据.Url路由系统最初是为了实现请求url与物理文件路径分离而建立的,MVC的Url Route是将Url地址与 ...

  7. Django中的url路由机制------学习mooc中《Python云端系统开发入门》

    通过对url的定义转换.传参.命名等,找到相关的view,也就是它的处理函数. 路由就是关联url,及其处理函数关系的过程. 在django框架中,在settings.py文件中的ROOT_URLCO ...

  8. Werkzeug 之URL 路由

    Werkzeug 之URL 路由 原文链接http://werkzeug.pocoo.org/docs/0.12/routing/ 当需要组合控制器和视图函数时,我们需要一个调度器来实现.一个简单的实 ...

  9. 13.Django之url路由系统初探(一)

    一.什么是django中的url路由系统? django中的url路由系统的本质就是简历某个URL与某个视图(view)函数的对应(映射表)关系表,用下面这种特定的方式来告诉django这个web框架 ...

最新文章

  1. 微服务架构如何保证安全性?
  2. 从Web借鉴UI设计
  3. Qt消息机制与window程序消息的对比分析
  4. Myeclipse快捷键总结大全
  5. SQL开发中容易忽视的一些小地方( 三)
  6. 采用存储复制方式同步数据,实现数据库安全升级
  7. 想要成为真正优秀的程序员是不是真的很难?
  8. 服务发现与负载均衡traefik ingress
  9. 新建android模拟器无法拨号 真机可以拨号,自己想弄个手机拨号器,可是在模拟器上没有反应,能帮帮忙吗?...
  10. centos下不重装php——给PHP添加新扩展库
  11. java项目目录_Java项目目录解释
  12. IDEA生成SerialVersionUID
  13. c语言数据结构与算法参考文献,数据结构论文参考文献
  14. 【测试】11月11日的测试
  15. 计算机任务管理器无法响应,Win7系统电脑在任务管理器中关闭进程时总是未响应的解决方法...
  16. java 利用Future做超时任务处理
  17. CSS学习笔记 01、CSS3基础知识学习
  18. 初学三分法之考研路茫茫——早起看书
  19. pdf怎么合并在一起?
  20. ubuntu系统chrome代理问题

热门文章

  1. 十一、explain属性介绍
  2. android如何根据机顶盒区分用户,Android 上手机跟机顶盒应用开发的区别
  3. 不属于mysql常量的是_MySQL中,下面______常量的写法是不正确的?-智慧树MySQL数据库设计与应用章节答案...
  4. Java中Comparable和Comparator的区别
  5. 21day学通python epub_21天就让你掌握Python语言,《21天学通Python》PDF版送给你去学...
  6. ERROR: Could not find a version that satisfies the requirement trusted-host (from versions: none) ER
  7. python 删除代码中的注释,正则匹配
  8. mac u盘文件过大 拷贝不进去_使用mac时文件太大无法拷贝怎么办
  9. 计算机网络离不开光缆,九年级物理全册 第二十一章 第四节 越来越宽的信息之路习题课件 新人教版.ppt...
  10. nodejs+html转换pdf,Nodejs中使用phantom将html转为pdf或图片格式的方法