Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:一二阶段作业,请在6月10日前完成
一、认识路由原理:目标:将URL中的控制器,方法解析出来,映射到对应的控制器类和方法上。
代码:
<?php // 路由原理 // 目标:将URL中的控制器,方法解析出来,映射到对应的控制器类和方法上 // 控制器 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); // print_r($pathinfo); // 4. 解析参数: pathinfo路径变量 // 这里放的是从pathinfo中解析出来的变量组成的数组 $params = []; for ($i=0; $i<count($pathinfo); $i+=2) { // 检查当前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)); //http://php.edu/0514/me.php/user/getuser/id/11/name/鲜花
结果输出:
二、总结:
PHP中的路由目的是用地址调用指定类内的方法并传入参数。在什么场合使用?后期项目中希望能运用到。