批改状态:合格
老师批语:路由实现方式有许多种的, 老师只是提供了一个思路而已
<?phpnamespace mvc;class UserController{public function show($id,$name){return 'Hello '.$name.' id = ' .$id;}}//$pathinfo = explode('/',$_SERVER['PATH_INFO']);//array_filter():过滤掉空元素//array_values():将数组键名重置,从0开始$pathinfo = array_values(array_filter(explode('/',$_SERVER['PATH_INFO'])));//生成控制器名称//array_shift() 函数删除数组中第一个元素,并返回被删除元素的值//$controller =ucfirst(array_shift($pathinfo)).'Controller';//echo $controller.'<hr>';//完整类名echo UserController::class;echo '<hr>';echo __NAMESPACE__.'<hr>';$controller =__NAMESPACE__ . '\\' . ucfirst(array_shift($pathinfo)).'Controller';echo $controller.'<hr>';//解析控制器方法//array_pop() 函数删除数组中的最后一个元素,并返回其值$action = array_shift($pathinfo);/* echo $action.'<hr>';echo (new $controller)->$action();echo '<hr>';echo call_user_func([(new $controller),$action]); */print_r($pathinfo);echo '<hr>';$params = [];for ($i=0;$i<count($pathinfo);$i+=2){if(isset($pathinfo[$i+1])) $params[$pathinfo[$i]] = $pathinfo[$i+1];}print_r($params);echo '<hr>'.call_user_func_array([(new $controller),$action],$params);

什么是composer?
composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。
主要是理解路由的原理,通过$_SERVER[‘PATH_INFO’]全局变量获取控制器名,方法名和参数,然后再调用类中的方法,url地址会把值传给$_SERVER[‘PATH_INFO’],从而间接调用类方法
array_filter():过滤掉空元素
array_values():将数组键名重置,从0开始
array_shift() 函数删除数组中第一个元素,并返回被删除元素的值
array_pop() 函数删除数组中的最后一个元素,并返回其值
composer 是管理php依赖关系的工具
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号