路由的原理
路由主要将URL中的控制器,办法解析出来,映射到对应的控制器和办法中。
通常咱们会看到这样的地址http://127.0.0.1/0514/route.php/acton/del/id/10/name/admin,这个地址咱们要把它解析出来。
示例:
在浏览器地址栏输入以下
http://127.0.0.1/0514/route.php/acton/del/id/10/name/admin
后台部分:
//创建一个控制器类
classUserController
{
publicfunctiondel($id,$name)
{
echo'当时途径控制器为'.__CLASS__;
echo'
';
echo'当时办法为'.__FUNCTION__;
echo'
';
return"id==>$id,name==>$name";
}
}
//1.解析出PATHINFO
$pathinfo=array_values(array_filter(explode('/',$_SERVER['PATH_INFO'])));
//2.解析控制器
$controller=array_shift($pathinfo).'controller';
//3.解析控制器中的办法
$action=array_shift($pathinfo);
//4.解析参数
parse_str($_SERVER['QUERY_STRING'],$params);
$params=[];
for($i=0;$i
//检查当时pathinfo变量是否有值?
if(isset($pathinfo[$i+1])){
$params[$pathinfo[$i]]=$pathinfo[$i+1];
}
}
//print_r($params);
//5.调用控制器办法
$user=new$controller;
echo$user->$action(...array_values($params));
打印:
当时途径控制器为UserController
当时办法为del
id==>10,name==>admin
路由的作用
将URL的恳求优雅的对应到要履行的操作办法
总结
通过这节课的学习,我认识到了路由的优点,只需要将途径解析好,就可以将网络恳求的URL对应PHP应用层的逻辑处理地址,优点非常多。