Blogger Information
Blog 55
fans 3
comment 0
visits 54531
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
路由原理与composer安装
王佳祥
Original
688 people have browsed it

路由原理与composer安装

一、路由原理

1.路由是什么

  • 路由其实和路由器是一个道理, 通过一个入口接受请求, 然后通过(URL)匹配规则将请求分发到不同的地方。具体到一些主流框架上面,Router模块会配合Http模块分析请求, 并且按照一定规则解析去匹配路由,然后使用调度模块使逻辑调到某块代码(通常是控制器),最后返回响应。

2.写一个简单路由

  1. <?php
  2. namespace mvc;
  3. class UserController
  4. {
  5. public function show($id,$name)
  6. {
  7. return 'Hello '.$name.' id = ' .$id;
  8. }
  9. }
  10. //$pathinfo = explode('/',$_SERVER['PATH_INFO']);
  11. //array_filter():过滤掉空元素
  12. //array_values():将数组键名重置,从0开始
  13. $pathinfo = array_values(array_filter(explode('/',$_SERVER['PATH_INFO'])));
  14. //生成控制器名称
  15. //array_shift() 函数删除数组中第一个元素,并返回被删除元素的值
  16. //$controller =ucfirst(array_shift($pathinfo)).'Controller';
  17. //echo $controller.'<hr>';
  18. //完整类名
  19. echo UserController::class;
  20. echo '<hr>';
  21. echo __NAMESPACE__.'<hr>';
  22. $controller =__NAMESPACE__ . '\\' . ucfirst(array_shift($pathinfo)).'Controller';
  23. echo $controller.'<hr>';
  24. //解析控制器方法
  25. //array_pop() 函数删除数组中的最后一个元素,并返回其值
  26. $action = array_shift($pathinfo);
  27. /* echo $action.'<hr>';
  28. echo (new $controller)->$action();
  29. echo '<hr>';
  30. echo call_user_func([(new $controller),$action]); */
  31. print_r($pathinfo);
  32. echo '<hr>';
  33. $params = [];
  34. for ($i=0;$i<count($pathinfo);$i+=2){
  35. if(isset($pathinfo[$i+1])) $params[$pathinfo[$i]] = $pathinfo[$i+1];
  36. }
  37. print_r($params);
  38. echo '<hr>'.call_user_func_array([(new $controller),$action],$params);


二、composer下载

三、学习总结

  • 主要是理解路由的原理,通过$_SERVER[‘PATH_INFO’]全局变量获取控制器名,方法名和参数,然后再调用类中的方法,url地址会把值传给$_SERVER[‘PATH_INFO’],从而间接调用类方法

  • array_filter():过滤掉空元素

  • array_values():将数组键名重置,从0开始

  • array_shift() 函数删除数组中第一个元素,并返回被删除元素的值

  • array_pop() 函数删除数组中的最后一个元素,并返回其值

  • composer 是管理php依赖关系的工具

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:路由实现方式有许多种的, 老师只是提供了一个思路而已
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!