批改状态:合格
老师批语:
路由原理:从 url 地址中解析数据。
_GET: 返回查询字符串拆解的数组implode(): 将数组切割成字符串vprintf:按照指定模板打印$_SERVER['QUERY_STRING'];获取 url 地址的查询字符串$_SERVER['PATH_INFO'];获取地址的 PATHINFO 变量/ 路径变量$_SERVER['REQUEST_URI'];获取相对于当前主机名下的文件的绝对路径
<?php// 写一个简单的控制器class MyController{public function getInfor($name, $salary){return "姓名: ==> $name, 工资: ==> $salary";}}// https://help10086.io/0222/demo1.php/MyController/getInfor/name/srp/salary/30000// var_dump($_SERVER['PATH_INFO']);// array_filter去除空字符 array_values将数组重新排序$res = array_values(array_filter(explode("/", $_SERVER['PATH_INFO'])));echo '<pre>';print_r($res);$controller = array_shift($res);// echo $controller;$method = array_shift($res);// echo $method;for ($i = 0; $i < count($res); $i += 2) {$params[$res[$i]] = $res[$i + 1];}echo '<pre>';print_r($params);// 第一种解决方法$infor = (new MyController)->getInfor($params['name'], $params['salary']);var_dump($infor);// 第二种回调的解决方法$infor = call_user_func_array([(new $controller), $method], [$params['name'], $params['salary']]);echo $infor;

<?php// 写一个简单的控制器class MyController{public function getInfor($name, $salary){return "姓名: ==> $name, 工资: ==> $salary";}}// var_dump($_SERVER['REQUEST_URI']);//获取到路由的地址$url = $_SERVER['REQUEST_URI'];//将路由地址转数组$urlarr = parse_url($url);// var_dump($urlarr['query']);//将需要的get部分的路由地址转数组parse_str($urlarr['query'], $xarr);// var_dump($xarr);// https://help10086.io/0222/demo2.php?name=srp&salary=30000echo (new MyController)->getInfor($xarr['name'], $xarr['salary']);

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号