美文网首页
TP5路由分发原理简介

TP5路由分发原理简介

作者: singwa | 来源:发表于2017-05-17 10:00 被阅读0次

1、thinkphp5中一个典型的URL请求的执行过程大致如下:

用户请求 -> 路由解析 -> 调度请求 -> 执行操作 -> 响应输出

2、路由在框架中的作用打个比方的话,路由好比是WEB应用的总调度室,对于访问的URL地址,路由可以拒绝或者接受某个URL请求,并进行分发调度,而且还有一个副作用是因为路由规则可以随意定义,因此可以让你的URL请求地址更优雅,因为不会暴露实际的URL地址,也就意味着更安全,5.0的路由不仅仅只是支持路由到控制器的操作方法,甚至可以路由到任何的类或者闭包。

3、那么我们来分析下路由内部做了哪些事情,还是列举一个简单的例子

url请求过来会执行 App类里面的run方法,这个方法中tp5会去检测路由,也就是routeCheck方法,这个方法会去加载application应有目录下的route.php,这个文件其实就是我们自定义的一些路由规则 , 然后再通过tp内置的Route类库批量注册路由, 比如如果我们在route.php里面注册了这么一个路由信息'test' => 'index/index/test' (备注:比如我们访问xxx.com/test 实际上他是定位到xxx.com/index/index/test) 那么这些信息就会被Route基础类库注册到路由中,之后需要做的路由检测(根据路由定义返回不同的URL调度),这个时候需要分2种情况 ,第一种情况:检测后有值(备注:比如这种地址xxx.com/test的访问) 第二种情况:无内容、这说明当前的url请求不在自定义的路由配置中(比如最简单的xxx.com/index/index/index这个地址的访问),那么这个时候会执行Route::parseUrl这个解析,但是不管怎么样这两种情况的结果返回的都是如下格式:

Array

(

   [type] => module    #类型  tp5中有好几种 具体几个类型可以参考App类里面的exec方法

   [module] => Array

       (

           [0] => xxx  #模块

           [1] => xxx  #控制器

           [2] => xx   #方法

       )

)

4、接下来会根据上面返回的内容 来记录当前调度信息,然后会去执行app类里面的exec方法,我们已type=module来举例, 之后就会去执行App类里面的module(执行模块方法)、大致就这么回事

案例分析:

我们用一个URL请求案例来体验下路由的使用,定义一个控制器类命名为application/index/controller/Index.php:

namespace app\index\controller;

class Index

{

   public function test()

   {

       return 'hello-test' ;

   }

}

要访问Index控制器的test操作方法的话,没有定义路由规则之前,访问的URL地址应该是:

http://xxx.com/index/index/test

访问后浏览器输出结果为:

hello-test

下面我们来定义一个路由:

在application目录下的route.php中加入:'test' => 'index/index/test',

定义后,我们就可以直接访问下面的地址:

http://xxx.com/test

访问后浏览器输出结果和之前是一样的。

之前singwa做过2套实战课程,成功帮助很多小伙伴找到了心仪的工作

前端到后台ThinkPHP开发整站

ThinkPHP5实战-仿百度糯米开发多商家电商平台

备注:视频合作方-慕课网

相关文章

  • TP5路由分发原理简介

    1、thinkphp5中一个典型的URL请求的执行过程大致如下: 用户请求 -> 路由解析 -> 调度请求 -> ...

  • 最简单的Vue与Tp5共存

    1、【原理:】vue和tp5有自己的路由,但是tp5用来做数据端就不需要这个了,直接设置为vue的nginx配置即...

  • 前端微服务化解决方案5 - 路由分发

    路由分发式微前端 从应用分发路由到路由分发应用 用这句话来解释,微前端的路由,再合适不过来. 路由分发式微前端,即...

  • ThinkPHP基础-----第五章(路由相关)第一部分

    1、路由作用简化URL地址 2、入口文件: 3、隐藏入口文件: TP5路由: 路由模式:

  • Vue Router 路由实现思路

    路由包含的概念 1.路由 只要满足一对多的关系就叫分发, 分别发送到各个地方。路由就是分发请求,路由器就是分发请求...

  • 前段路由实现思路

    路由是什么 以路由器为例满足一对多的就叫做分发,分发请求的东西就是路由器结合路由来看分发请求的对象就是路由 简单路...

  • 【网络工程师配置篇】华为RIP路由基础配置续篇——重分发

    一、RIP路由重分发功能介绍:将从其他路由协议学习的路由引入rip域内 二、RIP路由重分发应用场景: 企业的网络...

  • react-router-dom

    一、什么是前端路由 在我看来,前端路由和网络上的路由器功能很像。前端路由也是进行分发操作,只不过其分发的是页面跳转...

  • 微前端的技术拆分方式

    1.路由分发式。通过HTTP服务器的反向代理功能,将请求路由到对应的应用上 路由分发式微前端,即通过路由将不同的业...

  • 路由重分发(一)

    1. 路由重分发的概念: 重分发是指连接到不同路由域(自治系统)的边界路由器在它们之间交换和通告路由选择信息的能力...

网友评论

      本文标题:TP5路由分发原理简介

      本文链接:https://www.haomeiwen.com/subject/omtdxxtx.html