Laravel框架深入探索-入口文件

这一系列文章旨在对Laravel框架进行深入的解析,了解和揭示框架本身的内在实现机制,以便更好地指导我们对框架的使用。

 

入口文件

基于Laravel框架开发的应用,对Web Server来说,和普通应用并无区别。所以当Web Server收到一个Http请求,不管是Apache还是Nginx,都只是简单地将其交给DocumentRoot下面特定的入口文件index.php,并等待其返回相应的结果。对Laravel而言,这个入口就是工程目录中的public/index.php文件。所有Http请求过来后,都是由这个文件进行处理的。在某种意义上,甚至可以说,都是在这个文件之内进行处理的。
 
index.php当中的代码,虽然很概括,但完整地描述了Laravel框架对一个Http请求进行处理的流程。框架中所有其他的处理过程,都被隐藏在这个概括的流程当中,等待我们去一一探索和发现。这个大概的流程,是这样的:
 
  1. 定义了一个常量:LARAVEL_START,记录脚本被启动时服务器的时间,精确到毫秒。
  2. 执行vendor/autoload.php当中的代码。这个实际上是composer的提供的一项功能,用来自动加载被composer下载的库中的所有类文件,等我们对composer进行研究之后再来具体探讨。
  3. 通过执行bootstrap/app.php当中的代码,来创建一个Laravel应用(app)实例,这个实例可以认为是一个容器,里面装载了所有为了完成一次对request进行处理并返回response所需要的各种组件。因为Web Server每收到一个http请求,都会调用一次public/index.php,所以,对每一个http请求,都是由一个全新创建的app实例来处理的。反过来,每个app实例,也都只处理一个请求。
  4. 创建一个kernel对象。
  5. 让kernel去处理http请求(也就是request对象),并将处理结果封装成一个response对象。
  6. 发送response对象。
  7. 结束对这次“request->response“的处理。
 
就是这七个步骤。
posted @ 2019-08-08 11:36  蒸熊掌  阅读(240)  评论(0编辑  收藏  举报