Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:理解了就好
<?php
namespace MVC;
class UserController
{
public function show()
{
return 'PHP中文网';
}
public function show1($name, $course)
{
return '姓名:' . $name . ',课程:' . $course;
}
}
// 先获取pathinfo信息
// http://xiaoshang.com/PHP/0805/0805.php/user/show
$pathinfo = explode('/', $_SERVER['PATH_INFO']);
// 过滤掉空元素后键名重置
$path = array_values(array_filter($pathinfo));
// 生成控制器类名(有命名空间需要拼接命名空间)
$controller = __NAMESPACE__ . '\\' . ucfirst(array_shift($path)) . 'Controller';
$show = array_shift($path);
// echo (new $controller)->$show();
echo call_user_func([(new $controller), $show]), '<hr>';
// 方法需要参数(方法参数还是用pathinfo获取)
// http://xiaoshang.com/PHP/0805/0805.php/user/show/show1/name/admin/course/PHP/sex
$show1 = array_shift($path);
$arr = [];
for ($i = 0; $i < count($path); $i += 2) {
// 需要做判断不要出现空值
if (isset($path[$i + 1]))
$arr[$path[$i]] = $path[$i + 1];
}
echo call_user_func_array([(new $controller), $show1], $arr)
// URL中的pathinfo参数不使用键名
// http: //xiaoshang.com/PHP/0805/0805.php/user/show1/admin/PHP
$controller = __NAMESPACE__ . '\\' . ucfirst(array_shift($path)) . 'Controller';
$show1 = array_shift($path);
echo call_user_func_array([(new $controller), $show1], $path);
URL中的pathinfo参数不使用键名
1.了解了url怎么映射到控制方法上