会员
周边
众包
新闻
博问
闪存
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
huaobin
博客园
首页
新随笔
联系
订阅
管理
thinkphp6-3
0x01 源码解析
1、public/index.php
// [ 应用入口文件 ]
//定义根命名空间
namespace
think;
//引入composer
require
__DIR__ .
'/../vendor/autoload.php';
//通过Ioc容器将HTTP类实例出来
// 执行HTTP应用并响应 $http = (
new App())->http;
//执行HTTP类中的run类方法 并返回一个response对象 $response = $http->run();
//执行response对象中的send类方法 该方法是处理并输出http状态码以及页面内容 $response->send();
//执行response对象中的send方法 $http->end($response);
2、通过\Think\App容器获取到Http对象,然后再执行Http对象中的run方法
/**
* 执行应用程序
*
@access public
*
@param Request|null $request
*
@return Response
*/
public
function
run(
Request $request =
null):
Response {
//判断是否传入Request对象,如果没有则创建 $request = $request ??
$this->app->make(
'request', [],
true);
//将Request绑定到App容器内
$this->app->instance(
'request', $request);
try {
//runWithRequest方法 作用是执行应用程序 $response =
$this->runWithRequest($request); }
catch (
Throwable $e) {
//如果捕捉到Throwable异常 则执行reportException方法
//调用Handle::class实例中的report方法。收集异常信息
$this->reportException($e);
//通过调用Handle::class实例中的render方法
//获取异常信息输出流 $response =
$this->renderException($request, $e); }
//return 内容
return $response; }
3、\Think\Http->runWithRequest() 初始化应用程序,并执行
protected
function
runWithRequest(
Request $request) {
//初始化应用程序
$this->initialize();
// 加载全局中间件
$this->loadMiddleware();
// 设置开启事件机制
$this->app->event->withEvent(
$this->app->config->get(
'app.with_event',
true));
// 监听HttpRun
$this->app->event->trigger(HttpRun::class);
//这里重点
return
$this->app->middleware->pipeline() ->send($request) ->then(
function (
$request) {
//通过dispatchToRoute方法加载路由
return
$this->dispatchToRoute($request); }); }
4、\Think\Http->dispatchToRoute()
protected
function
dispatchToRoute(
$request) {
//通过容器控制反转快速获取config类实例
//并获取配置文件中的with_route 判断是否加载路由
//如果加载则返回一个匿名函数。里面是路由文件内的设置 $withRoute =
$this->app->config->get(
'app.with_route',
true) ?
function (
) {
$this->loadRoutes(); } :
null;
//执行\Think\Route类中的dispatch方法,并且将获取到的路由
//文件以及当前的Request实例传入到路由中,然后进行路由调度
return
$this->app->route->dispatch($request, $withRoute); }
posted @
2021-09-06 10:10
青竹之下
阅读(
121
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
公告