今天要再来研究下tp的Dispatcher.class.php,并且自己想也写个仿照tp该类的url解析类,虽然可能没有tp那样复杂,但是基础原理还是有的。
dispatcher.class.php (thinkphp(三))
$_SERVER['PATH_INFO']
这个变量有必要解释一下,他的作用就是解析你真正请求的文件(如index.php)后面非参数形式的内容
http://127.0.0.1/search/index.php/Home/index/index // /Home/index/index
http://127.0.0.1/search/index.php/Home/index/index?a=3 // /Home/index/index
基本上的情况就是这样,如果想进一步了解可以自行Google
另外和这哥们有关的几个变量
请求地址(http://127.0.0.1/tp/index.php/Home/index/index?a=3)
REQUEST_URI(用户导航栏除了域名之后的东西,类似/tp/index.php/Home/index/index?a=3),
PHP_SELF(/tp/index.php/Home/index/index,它和上面的区别不仅在于会去掉get参数,它表示user真正请求的URL,及时输入http://127.0.0.1/tp/), 该值仍为/tp/index.php,这点需要在rewrite模式下注意)
SCRIPT_NAME(/tp/index.php);
QUERY_STRING(a=3);
pathinfo()
该函数第二个参数为,PATHINFO_DIRNAME,PATHINFO_BASENAME和PATHINFO_EXTENSION或PATHINFO_FILENAME,分别返回不加该参数的数组键值为dirname,basename,extension,filename;
顺便粘贴下自创愚蠢式url解析类(后续改进)