zoukankan      html  css  js  c++  java
  • 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“的处理。
     
    就是这七个步骤。
  • 相关阅读:
    Avoiding first chance exception messages when the exception is safely handled
    网上邻居解决方法
    ******Can anyone explain me what do you mean by CreateControl
    一個界面設計比較好的外國網站
    How to create a Vertical ProgressBar
    bat如何批量删除指定部分文件夹名的文件夹
    ColumnView.ShownEditor Event
    Apache+php+mysql官方网站下载地址
    根据JAVA的POJO类生成AS3的VALUEOBJECT类
    Spring BlazeDS Integration简介与入门
  • 原文地址:https://www.cnblogs.com/zhaoxizhe/p/11288660.html
Copyright © 2011-2022 走看看