- 入口文件先实例化容器,然后再通过容器去获取到Http对象 (Web管理类),然后执行Http对象中的run方法。
- 方法内会创建一个Request对象,然后将对象绑定到容器内。然后再到runWithRequest方法,执行应用程序
- runWithRequest方法内会初始化当前应用,简单来说就比如加载一下语言包,加载一下应用文件。common.php公共函数文件。helper.php助手函数文件、.env环境变量、运行开始的时间、设置时区、加载中间件等等。然后到dispatchToRoute方法,传入当前的Request请求对象。
- dispatchToRoute方法,这里我姑且称为路由初始化方法。这里主要就是检测配置文件,是否开启了路由。如果开启了路由。就加载路由文件。并且设置一个匿名函数。只有在调用的时候才会加载设置的路由。接着会通过容器获取route类的实例。并且传入当前Request对象和路由配置的匿名函数并执行里面的dispatch方法
- dispatch方法,主要就是路由初始化。判断路由是否配置。如果没有配置就直接执行默认控制器和默认方法。如果有的话。就加载一下路由配置,再执行check方法,通过check方法。去检测是什么路由。然后调用url方法传入当前的url地址
- url方法执行并且会返回一个Url基础类
- 这里我称之为url且切割类吧。他主要的作用就是将传入的Request对象,rule路由规则对象,以及当前的url地址。把url地址解析。这里又去调用了一个parseUrl方法。
- 这个方法我就不多介绍了。它主要的作用就是分割出来要执行的control和function。
- 到这里就结束了url的部分。又回到了第五部。去调用url类中的init方法(路由后置操作。中间件).然后通过middleware中的then。到最后执行一个上一步返回的Url类中的run方法
- run这里主要就是最通过exec再去获取控制器(controller)和对应的方法(function)的结果。然后创建一个Response对象。最后返回
- 最后回到了入口文件run方法下面还有一个send方法。源码就不贴了。他的作用就是输出
- 入口文件最后一行。调用了一下Http类的end方法。简单说就是挂个HttpEnd中间件。然后执行中间件。最后再记录一下日志。
thinkphp6 -2
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:CVF顶会热词统计
下一篇:class的动态绑定
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【ThinkPHP6系列学习-1】下载并部署ThinkPHP6ThinkPHP6 php composer 目录结构
-
Thinkphp6获取SQL语句
Thinkphp6获取SQL语句
Thinkphp6获取SQL语句 -
Thinkphp6管道模式Pipeline使用
纵观网络上使用Tp的管道模式的例子非常少,都是解析在框架中中间件使用应用场景,其实在业务开
php 开发语言 中间件 Laravel 应用场景 -
linux上卸载postgresql
mysql5.6的安装包链接:https://pan.baidu.com/s/1rYzRiRUkQD4EH5vwfyf9dQ提取码:6d5b方法一:1、首先关闭linux的防火墙,执行命令chkconfig iptables off2、从mysql官网上下载自己适合的mysql版本https://dev.mysql.com/downloads/mysql/5.6.html#downloads,进入
linux上卸载postgresql linux卸载安装mysql数据库实例 mysql linux MySQL