批改状态:合格
老师批语:将url中变量解析出来的方式很多, 老师提供了一种方案, 你也可以想一下其它的实现方案
<?phpclass UserController{public function getUser($id,$name){return "id===>$id,name===>$name";}}//1.解析出pathinfo$pathinfo = array_filter(explode('/',$_SERVER['PATH_INFO']));//2.解析控制器$controller = array_shift($pathinfo).'Controller';//3.解析控制器的方法$action = array_pop($pathinfo);//4.解析参数parse_str($_SERVER['QUERY_STRING'],$params);//5.调用控制器的的方法$user = new $controller;echo $user->$action(...array_values($params));

<?phpclass UserController{public function getUser($id,$name){return "我的id===>$id,我的name===>$name";}}//1.解析出pathinfo$pathinfo = array_filter(explode('/',$_SERVER['PATH_INFO']));//2.解析控制器$controller = array_shift($pathinfo).'Controller';//3.解析控制器的方法$action = array_shift($pathinfo);for($i = 0;$i<count($pathinfo);$i+=2){if(isset($pathinfo[$i+1])) $params[$pathinfo[$i]] = $pathinfo[$i+1];}//4.调用控制器中的方法$user = new $controller;echo $user->$action(...array_values($params));

总结:路由解析主要用到$_SERVER这个全局变量,通过PATH_INFO以及QUERY_STRING两个参数得到控制器方法以及传递的参数,对于后面一种全是通过’/‘的路由,在参数中需要进行判定其是否有相应的值。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号