一切的开始——入口文件
入口文件位置:网站根目录/public/index.php
首先上代码:
<?php
namespace think;
require __DIR__ . '/../vendor/autoload.php';
// 执行HTTP应用并响应
$http = (new App())->http;
$response = $http->run();
$response->send();
$http->end($response);
上面为入口文件的全部代码,接下来开始逐条解析:
namespace think;
此行代码是用来声明命名空间,表示本入口文件所在的命名空间叫think
。require __DIR__ . '/../vendor/autoload.php';
此行代码主要作用是把thinkPHP框架所需的vendor
中所有的组件包全部加载进来。(注:vendor中的组件包是用composer下载的,包括thinkPHP的核心包,第一章节具体分析。)$http = (new App())->http;
实例化App类,此过程中会调用容器绑定,从而把所有的容器类绑定到App类中,进而通过App类来获取http类的实例,并把http的实例赋值给$http
。(注:第二章节具体分析。)$response = $http->run();
此行代码是执行http实例中的公共方法run(),并把返回值赋值给$response
,返回值为一个response对象。(注:第三章节具体分析。)$response->send();
此行代码是把返回数据发送给请求方客户端。(注:第四章节具体分析)$http->end($response);
此行代码是处理请求结束之后的一些操作,比如触发事件、写日志等。(注:第五章节具体分析。)