批改状态:合格
老师批语:把这个理解 了, 后面学框架, 学路由就好办了
<?php// 路由原理// 目标:将URL中的控制器,方法解析出来,映射到对应的控制器类和方法上// http://phpedu11//0514/pathinforoute.php/user/getuser/id/50/name/peter// pathinfo方式// 控制器class userController{public function getUser($id,$name){return "您的ID ==>$id , 您的姓名==>$name";}}// 1.解析出PATHINFO$pathinfo = array_values( array_filter(explode('/', $_SERVER['PATH_INFO']))) ;// print_r($pathinfo);// 2.解析出控制器$Controller = ucfirst(array_shift($pathinfo) ). 'Controller';// 3.解析出方法$action = array_shift($pathinfo) ;// 4.解析出参数$params = [];for ($i=0;$i<count($pathinfo);$i+=2){// 检查当前pathinfo变量是否有值?if(isset($pathinfo[$i+1])){$params[$pathinfo[$i]] = $pathinfo[$i+1];}}// parse_str($_SERVER['QUERY_STRING'] , $params);// 5.调用控制器的方法$User = new $Controller();echo $User->$action(...array_values($params));
演示效果
总结:
1.URL含有丰富的路由信息。今天学习了如何把URL中的控制器、方法、参数等解析出来,再测试能否调用控制器的方法。
2.查询变量:获取URL中查询字符串(?后面的参数)
$_GET : 获取URL中?后面的参数,返回一个数组。要用implode()才能分解为查询字符串。
$_SERVER[‘QUERY_STRING’]:获取URL中?后面的参数,直接返回查询字符串。
3.路径变量:获取URL中pathinfo方式的字符串(含控制器、方法、参数、值等)。
$_SERVER[‘PATH_INFO’] : 返回一个pathinfo变量的字符串。
$_SERVER[‘QUERY_URI’]:返回一个接近完整的URL信息。
4.路由解析:
解析出PATHINFO->解析出控制器->解析出方法->解析出参数->调用控制器的方法
5.composer安装成功。
版本号:Composer version 1.10.6 2020-05-06 10:28:10
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号