《PHP學習:跟我學Laravel之請求(Request)的生命周期》要點:
本文介紹了PHP學習:跟我學Laravel之請求(Request)的生命周期,希望對您有用。如果有疑問,可以聯系我們。
PHP教程概述
PHP教程在現實世界中使用工具時,如果理解了工具的工作原理,使用起來就會更加有底氣.應用開發也是如此.當你理解了開發工具是如何工作的,使用起來就會更加自如.這篇文檔的目標就是提供一個高層次的概述,使你對于Laravel框架的運行方式有一個較好的把握.在更好地了解了整個框架之后,框架的組件和功能就不再顯得那么神秘,開發起應用來也更加得心應手.這篇文檔包含了關于哀求生命周期的高層次概述,以及啟動文件和應用程序事件的相關內容.
PHP教程如果你不能立即理解所有的術語,別灰心,可以先有一個大致的把握,在閱讀文檔其他章節的過程中繼續積累和消化知識.
PHP教程哀求的生命周期
PHP教程發送給應用程序的所有哀求都經由 public/index.php 腳本處理.如果使用的是 Apache 服務器,Laravel中包含的 .htaccess 文件將對所有哀求進行處理并傳遞給 index.php.這是Laravel從接受客戶端哀求到返回響應給客戶端的整個過程的開始.若能對于Laravel的引導過程(bootstrap process)有一個大致的認識,將有助于理解框架,我們不妨先討論這個.
PHP教程到目前為止,學習Laravel引導過程所需掌握的最重要的概念就是 服務提供器.打開 app/config/app.php 配置文件,找到 providers 數組,你會發現一個服務提供器的列表.這些提供器充當了Laravel的主要引導機制.在我們深入服務提供器之前,先回到 index.php的討論.當一個哀求進入 index.php 文件,bootstrap/start.php 文件會被加載.這個文件會創建一個 Laravel Application 對象,該對象同時作為框架的 IoC 容器.
PHP教程Application 對象創建完成后,框架會設置一些路徑信息并運行 環境檢測 .然后會執行位于Laravel源碼內部的引導腳本,并根據你的配置文件設置時區、錯誤申報等其他信息.除了配置這些瑣碎的配置選項以外,該腳本還會做一件非常重要的事情:注冊所有為應用程序配置的服務提供器.
PHP教程簡單的服務提供器只包含一個方法:register.當應用程序對象通過自身的 register 方法注冊某個服務提供器時,會調用該服務提供器的 register 方法.服務提供器通過這個方法向 IoC 容器 注冊一些東西.從本質上講,每個服務提供器都是將一個或多個 閉包 綁定到容器中,你可以通過這些閉包拜訪綁定到應用程序的服務.例如,QueueServiceProvider 注冊了多個閉包以便使用與 隊列 相關的多個類.當然,服務提供器并不局限于向IoC容器注冊內容,而是可以用于任何引導性質的任務.服務提供器可以注冊事件監聽器、視圖合成器、Artisan命令等等.
PHP教程在注冊完所有服務提供器后,app/start 下的文件會被加載.最后,app/routes.php 文件會被加載.一旦 routes.php 文件被加載,Request 對象就被發送給應用程序對象,繼而被派發到某個路由上.
PHP教程我們總結一下:
PHP教程哀求進入 public/index.php 文件.
bootstrap/start.php 文件創建應用程序對象并檢測環境.
內部的 framework/start.php 文件配置相關設置并加載服務提供器.
加載應用程序 app/start 目錄下的文件.
加載應用程序的 app/routes.php 文件.
將 Request 對象發送給應用程序對象,應用程序對象返回一個 Response 對象.
將 Response 對象發回客戶端.
你應該已經掌握了 Laravel 應用程序是如何處理發來的哀求的.下面我們來看一下啟動文件.
PHP教程啟動文件
PHP教程應用程序的啟動文件被存放在app/start目錄中.默認情況下,該目錄下包括三個文件:global.php、local.php 和 artisan.php文件.需要獲取更多關于artisan.php的信息,可以參考文檔Artisan 命令行.
PHP教程global.php啟動文件默認包括一些基本項目,例如日志的注冊以及載入app/filters.php 文件.然而,你可以在該文件里做任何你想做的事情.無論在什么環境下,它都將會被自動包括進_每一個_request中.而local.php 文件僅在local環境下被執行.獲取更多關于環境的信息,請查看文檔配置.
PHP教程當然,如果除了local環境你還有其他環境的話,你也可以為針對這些環境創建啟動文件.這些文件將在應用程序運行在該環境中時被自動包含.假設你在 bootstrap/start.php 文件中配置了一個 development 環境,你可以創建一個 app/start/development.php 文件,在那個環境下任何進入應用程序的哀求都會包含該文件.
PHP教程啟動文件里存放什么
PHP教程啟動文件主要用來存放任何“引導”性質的代碼.例如,你可以在啟動文件中注冊視圖合成器,配置日志信息,或是進行一些PHP設置等.具體做什么取決于你.當然了,把所有引導代碼都丟到啟動文件里會使啟動文件變得雜亂.對于大型應用而言,或是啟動文件顯得太雜亂了,請考慮將某些引導代碼移至 服務提供器 中.
PHP教程應用程序事件
PHP教程你還可以通過注冊 before、after、finish 和 shutdown應用程序事件以便在處理request之前或后做一些操作:
PHP教程注冊應用程序事件
PHP教程App::after(function($request, $response)
{
??? //
});
PHP教程這些事件的監聽器會在每個到達應用程序的哀求處理之前(before)或之后(after)運行.可以利用這些事件來設置全局過濾器(filter),或是對于發回客戶端的響應(response)統一進行修改.你可以在某個啟動文件中或者 服務提供器 中注冊這些事件.
PHP教程當來自應用程序的響應發送至客戶端后會觸發 finish 事件.這個事件適合處理應用程序所需的最后的收尾工作.當所有 finish 事件的監聽器都執行完畢后會立即觸發 shutdown 事件,如果想在腳本結束前再做一些事情,這是最后的機會.不過在大多數情況下,你都不必要用到這些事件.
歡迎參與《PHP學習:跟我學Laravel之請求(Request)的生命周期》討論,分享您的想法,維易PHP學院為您提供專業教程。