批改状态:合格
老师批语:
解析pathinfo,从url解析控制器和方法,参数
从谷歌搜索输入url
http://chloe.io/0222/demo.php/user/index/id/2/name/jim
<?php//api mvc 这种架构模式 url地址都会映射到控制器下面的一个具体操作方法上namespace mvc;class User{function index($id, $name){return "您好$name,您的Id是$id";}}// var_dump($_SERVER);var_dump($_SERVER['PATH_INFO']);var_dump(explode("/", $_SERVER['PATH_INFO'])); // /user/index/id/2/name/jim//先用explode分割成数组//用array_filte()去除空数组,用array_values()重新排数组键$pathinfo = array_values(array_filter(explode("/", $_SERVER['PATH_INFO'])));// var_dump($pathinfo);//用array_shift()取出第一个字符串与命名空间拼接,为控制器$controller = __NAMESPACE__ . '\\' . array_shift($pathinfo);var_dump($controller);// var_dump($pathinfo);//用array_shift()取出字符串为方法$method = array_shift($pathinfo);var_dump($method);// $params = ['id' => 1, 'name' => 'peter'];var_dump($pathinfo);//前提是参数是通过pathinfo方式提交过来for ($i = 0; $i < count($pathinfo); $i += 2) {$params[$pathinfo[$i]] = $pathinfo[$i + 1];}//取出参数数组var_dump($params);//用call_user_func_array()返回回调函数的结果echo call_user_func_array([(new $controller), $method], $params);//改变url的参数值,回调函数的值随之改变
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号