// 1. 将控制器和方法拆分为数组$pathinfo = array_values(array_filter(explode('/', $_SERVER["PATH_INFO"])));// 2. 解析控制器$controller = ucfirst(array_shift($pathinfo));// 3. 解析方法$action = array_shift($pathinfo);// 4. 解析参数parse_str($_SERVER["QUERY_STRING"], $params);// 5. 调用控制器中的方法$obj = new $controller;echo $obj->$action(...array_values($params));

<?phpclass User {public function getName($id, $name) {return 'id:'.$id.'<br>'.'name:'.$name;}}// 1. 将控制器和方法拆分为数组$pathinfo = array_values(array_filter(explode('/', $_SERVER["PATH_INFO"])));// 2. 解析控制器$controller = ucfirst(array_shift($pathinfo));// 3. 解析方法$action = array_shift($pathinfo);echo $action;// 4. 解析参数:PATHINFO路径变量//用来保存从pathinfo解析出来的变量$params = [];//i+=2使当前索引横跨1个键值,跳到下一个键for ($i=0;$i<count($pathinfo);$i+=2) {//检查是否有键值if (isset($pathinfo[$i+1])) {//解析出新数组的键和值$params[$pathinfo[$i]] = $pathinfo[$i+1];}}// 5. 调用控制器中的方法$obj = new $controller;echo $obj->$action(...array_values($params));

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