批改状态:不合格
老师批语:课程总结, 效果图都没有, 尽可能按要求完成, 直接放个代码, 有什么意义 呢, 知道你认真写了, 但给人的感觉就是在应付
<?php// 路由原理// 目标:将URL中的控制器,方法解析出来,映射到对应的控制器类和方法上// http://php11.cn/teachPHP/tcdemo/router/demo1.php?action=edit&id=19&name=admin// 返回一个查询字符串分解的数组// print_r($_GET);// echo implode(',', $_GET);// ?action=edit&id=19&name=admin//printf('?action=%s&id=%s&name=%s',$_GET['action'],$_GET['id'],$_GET['name']);//vprintf('?action=%s&id=%s&name=%s',$_GET);/*** URL/查询变量/GET变量($_SERVER['QUERY_STRING']): action=edit&id=19&name=admin*/// echo '查询字符串: ' . $_SERVER['QUERY_STRING'];// echo '<hr>';// http:://php.edu/0514/route.php/action/edit/id/19/name/admin/*** PATHINFO变量/ 路径变量($_SERVER['PATH_INFO']): /action/edit/id/19/name/admin*///echo 'PATHINFO变量: ' . $_SERVER['PATH_INFO'];//echo '<hr>';/*** pathinfo:返回一个关联数组包含有 path 的信息* Array ( [dirname] => 0514 [basename] => route.php [extension] => php [filename] => route )*/// print_r(pathinfo('0514/route.php'));/*** 取得当前度URL的路径地址 :/teachPHP/tcdemo/router/demo1.php/action/edit/id/19/name/admin*/// http:://php.edu/0514/route.php/控制器/方法/参数1/值1/参数2/值2/....//echo 'http://php.edu' . $_SERVER['REQUEST_URI'];//echo '<hr>';
<?php//测试地址http://php11.cn/teachPHP/tcdemo/router/demo1.php/user/getuser?id=19&name=admin//控制器class UserController{public function getUser($id,$name){return "id=> $id , name => $name";}}//1.解析出pathinfo$pathinfo = array_values(array_filter(explode('/',$_SERVER['PATH_INFO'])));//2.解析控制器$controller = ucfirst(array_shift($pathinfo)) . 'Controller';//3.解析控制器中的方法$action = array_shift($pathinfo);// 4. 解析参数 parse_str — 将字符串解析成多个变量parse_str($_SERVER['QUERY_STRING'], $params);// 5. 调用控制器方法$user = new $controller();echo $user->$action(...array_values($params));// 5. 调用控制器方法
<?php// 路由原理// 目标:将URL中的控制器,方法解析出来,映射到对应的控制器类和方法上//测试地址http://php11.cn/teachPHP/tcdemo/router/demo2.php/user/getuser/id/200/name/admin//控制器class UserController{public function getUser($id,$name){return "id=> $id , name => $name";}}//1.解析出pathinfo$pathinfo = array_values(array_filter(explode('/',$_SERVER['PATH_INFO'])));//2.解析控制器$controller = ucfirst(array_shift($pathinfo)) . 'Controller';//3.解析控制器中的方法$action = array_shift($pathinfo);// 4. 解析参数// 这里放的是从pathinfo中解析出来的变量组成的数组$params = [];for($i = 0;$i<count($pathinfo);$i+=2){// 检查当前pathinfo变量是否有值?if(isset($pathinfo[$i+1])){$params[$pathinfo[$i]] = $pathinfo[$i+1];}}// 5. 调用控制器方法$user = new $controller();echo $user->$action(...array_values($params));// 5. 调用控制器方法
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号