一切的开始——入口文件

入口文件位置:网站根目录/public/index.php
首先上代码:

<?php
namespace think;
require __DIR__ . '/../vendor/autoload.php';
// 执行HTTP应用并响应
$http = (new App())->http;
$response = $http->run();
$response->send();
$http->end($response);

上面为入口文件的全部代码,接下来开始逐条解析:

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