博主信息
博文 9
粉丝 1
评论 0
访问量 10085
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP路由router
滑稽...
原创
1622人浏览过

路由处理

1.URL处理函数

  1. <?php
  2. // 路由原理
  3. // 目标:将URL中的控制器,方法解析出来,映射到对应的控制器类和方法上
  4. // http://php11.cn/teachPHP/tcdemo/router/demo1.php?action=edit&id=19&name=admin
  5. // 返回一个查询字符串分解的数组
  6. // print_r($_GET);
  7. // echo implode(',', $_GET);
  8. // ?action=edit&id=19&name=admin
  9. //printf('?action=%s&id=%s&name=%s',$_GET['action'],$_GET['id'],$_GET['name']);
  10. //vprintf('?action=%s&id=%s&name=%s',$_GET);
  11. /**
  12. * URL/查询变量/GET变量($_SERVER['QUERY_STRING']): action=edit&id=19&name=admin
  13. */
  14. // echo '查询字符串: ' . $_SERVER['QUERY_STRING'];
  15. // echo '<hr>';
  16. // http:://php.edu/0514/route.php/action/edit/id/19/name/admin
  17. /**
  18. * PATHINFO变量/ 路径变量($_SERVER['PATH_INFO']): /action/edit/id/19/name/admin
  19. */
  20. //echo 'PATHINFO变量: ' . $_SERVER['PATH_INFO'];
  21. //echo '<hr>';
  22. /**
  23. * pathinfo:返回一个关联数组包含有 path 的信息
  24. * Array ( [dirname] => 0514 [basename] => route.php [extension] => php [filename] => route )
  25. */
  26. // print_r(pathinfo('0514/route.php'));
  27. /**
  28. * 取得当前度URL的路径地址 :/teachPHP/tcdemo/router/demo1.php/action/edit/id/19/name/admin
  29. */
  30. // http:://php.edu/0514/route.php/控制器/方法/参数1/值1/参数2/值2/....
  31. //echo 'http://php.edu' . $_SERVER['REQUEST_URI'];
  32. //echo '<hr>';

2.get传参处理

  1. <?php
  2. //测试地址http://php11.cn/teachPHP/tcdemo/router/demo1.php/user/getuser?id=19&name=admin
  3. //控制器
  4. class UserController
  5. {
  6. public function getUser($id,$name)
  7. {
  8. return "id=> $id , name => $name";
  9. }
  10. }
  11. //1.解析出pathinfo
  12. $pathinfo = array_values(array_filter(explode('/',$_SERVER['PATH_INFO'])));
  13. //2.解析控制器
  14. $controller = ucfirst(array_shift($pathinfo)) . 'Controller';
  15. //3.解析控制器中的方法
  16. $action = array_shift($pathinfo);
  17. // 4. 解析参数 parse_str — 将字符串解析成多个变量
  18. parse_str($_SERVER['QUERY_STRING'], $params);
  19. // 5. 调用控制器方法
  20. $user = new $controller();
  21. echo $user->$action(...array_values($params));// 5. 调用控制器方法

3.”/“传参处理

  1. <?php
  2. // 路由原理
  3. // 目标:将URL中的控制器,方法解析出来,映射到对应的控制器类和方法上
  4. //测试地址
  5. http://php11.cn/teachPHP/tcdemo/router/demo2.php/user/getuser/id/200/name/admin
  6. //控制器
  7. class UserController
  8. {
  9. public function getUser($id,$name)
  10. {
  11. return "id=> $id , name => $name";
  12. }
  13. }
  14. //1.解析出pathinfo
  15. $pathinfo = array_values(array_filter(explode('/',$_SERVER['PATH_INFO'])));
  16. //2.解析控制器
  17. $controller = ucfirst(array_shift($pathinfo)) . 'Controller';
  18. //3.解析控制器中的方法
  19. $action = array_shift($pathinfo);
  20. // 4. 解析参数
  21. // 这里放的是从pathinfo中解析出来的变量组成的数组
  22. $params = [];
  23. for($i = 0;$i<count($pathinfo);$i+=2){
  24. // 检查当前pathinfo变量是否有值?
  25. if(isset($pathinfo[$i+1])){
  26. $params[$pathinfo[$i]] = $pathinfo[$i+1];
  27. }
  28. }
  29. // 5. 调用控制器方法
  30. $user = new $controller();
  31. echo $user->$action(...array_values($params));// 5. 调用控制器方法
批改老师:天蓬老师天蓬老师

批改状态:不合格

老师批语:课程总结, 效果图都没有, 尽可能按要求完成, 直接放个代码, 有什么意义 呢, 知道你认真写了, 但给人的感觉就是在应付
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学