博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
thinkphp url调度器解析原理
阅读量:6801 次
发布时间:2019-06-26

本文共 1021 字,大约阅读时间需要 3 分钟。

hot3.png

1.什么pathinfo?

        举个例子: http://www.test.com/index.php/type/news/id/4?name=chen&height=33        

        1. index.php 是服务器上真实存在的文件名  (在apache没有开启重写这个文件的情况下)

        2. type/news/id/4 就是pathinfo 会自动保存在$_SERVER['PATH_INFO'] 中

        3. ?后面的 name=chen&height=33 就是'query'参数 保存在$_SERVER['QUERY_STRING']中, 同时用$_GET['name']的方式也可以访问            

        4. thinkphp的url调度器就是把$_SERVER['PATH_INFO']的字符串解析到$_GET,$_POST,$_REQUEST数组中,如上面的解析后:$_GET['type'],$_GET['id']     

   举个例子:             

$_SERVER['PATH_INFO'] = 'type/news/id/4' //解析到$_GET中preg_replace('/(\w+)\/([^,\/]+)/e','$_GET[\'\\1\']=\'\\2\'',trim($_SERVER['PATH_INFO'],'/'));

        5. 在实际部署的时候往往会把index.php文件,只要开启apache的重写模块就行了,具体配置看

2.pathinfo需要注意什么?

    1.pathinfo 需要服务器的支持(apache是支持的,nigix默认不支持pathinfo)

    2.主流的web服务器是支持pathinfo,在不知pathinfo的情况下,把tp的url_mode 设置为3,并且把参数写入到

    兼容模式的参数中 如:  s=Home/Index/index/id/2  tp解析时第一步就会执行: $_SERVER['PATH_INFO']=$_GET[s];   

3.url如何解析?

        $_SERVER['PATH_INFO'] 按照tp的格式解析到$_GET,$_REQUEST数组,所用到的技术主要有

    1. 处理串处理函数 strpos(找位置)  substr(截取)  strstr(快速截取时用)

    2. 正则表达式和及子模式的应用

4.代码示例: 

        

转载于:https://my.oschina.net/u/1178986/blog/201206

你可能感兴趣的文章
.Net 调用中国气象台Web Service
查看>>
BNU 51002 BQG's Complexity Analysis
查看>>
leetcode 7. Reverse Integer
查看>>
VC++6.0 自定义按钮,无标题对话框的拖动方法
查看>>
Ubuntu下 安装 window 虚拟机
查看>>
Urxvt最简配置
查看>>
JAVA-基础(线程)
查看>>
[转载]C#中使用ADO.NET连接SQL Server数据库,自动增长字段用作主键,处理事务时的基本方法...
查看>>
一个图片无限循环上下运动实例
查看>>
ajax参数解析
查看>>
HA模式下的java api访问要点
查看>>
SDNU 1095.Ignatius and the Princess IV(水题)
查看>>
BZOJ 3931 Dijkstra+网络流
查看>>
remoting和webservice
查看>>
保护模式下的跳转
查看>>
java冒泡排序和快速排序
查看>>
【BZOJ2001】 [Hnoi2010]City 城市建设
查看>>
装饰器函数
查看>>
json字符串转换成json增删查改节点
查看>>
DOM_03之元素及常用对象
查看>>