博客列表 >PHP路由与解析控制器

PHP路由与解析控制器

大A
大A原创
2020年05月15日 16:13:25955浏览

介绍

用地址调用指定类内的方法并传入参数

代码

  1. <?php
  2. //路由类
  3. class Routing
  4. {
  5. private $query, $path_array, $class, $method;
  6. public function __construct($server)
  7. {
  8. $this->query = $server['QUERY_STRING'];
  9. $path = $server['PATH_INFO'];
  10. $path = array_filter(explode('/', $path));
  11. $this->class = array_shift($path);
  12. $this->method = array_shift($path);
  13. $this->path_array=$path;
  14. }
  15. public function getquert()
  16. {
  17. parse_str($this->query, $result);
  18. return $result;
  19. }
  20. public function getclass()
  21. {
  22. return $this->class;
  23. }
  24. public function getmethod()
  25. {
  26. return $this->method;
  27. }
  28. public function getpath()
  29. {
  30. for ($i = 0; $i < count($this->path_array); $i += 2) {
  31. $value = $this->path_array[$i + 1];
  32. if ($value) $result[$this->path_array[$i]] = $value;
  33. }
  34. return $result;
  35. }
  36. }
  37. //控制器
  38. class Controller
  39. {
  40. public function show($array)
  41. {
  42. foreach ($array as $key => $value) {
  43. $result.=$key.'=>'.$value.'<br>';
  44. }
  45. return $result;
  46. }
  47. }
  48. //创建路由对象
  49. $a = new Routing($_SERVER);
  50. //解析调用的类
  51. $class=$a->getclass();
  52. ///解析调用的方法
  53. $method=$a->getmethod();
  54. ///解析方法内的参数
  55. $path=$a->getpath();
  56. //生成解析的类
  57. $b=new $class;
  58. //调用类内的方法
  59. echo $b->$method($path);
  60. //http://php.edu/index.php/Controller/show/ffff/5435/vcd/356/fds/5455
上一条:php:会话控制下一条:laravel 安装
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议