【Laravel5.2翻譯】 Request 生命周期


前陣子看了點Laravel源碼,越看越亂,網(wǎng)上大部分中文文檔都是直譯,比較生澀難懂,還是決定看英文文檔順便就我的理解做下翻譯整理記錄下來


思維導圖

引言

在現(xiàn)實生活中當你使用工具的時候,如果你知道工具如何運作的話,你會用起來更自信。應(yīng)用開發(fā)也是如此。如果你理解開發(fā)工具的如何工作的,你用起來就會更舒服和自信。
這篇文檔的目的就是告訴你Laravel框架是如何工作的。通過更好的了解全部框架,所有東西就變得不是那么神奇,你將更有信心的創(chuàng)建你自己的應(yīng)用。
如果你無法立刻理解所有的細節(jié),不要失去信心!盡力理解最基本的東西,當你看其他章節(jié)的時候你會理解的越來愈多。

生命周期概述

首先

Laravel應(yīng)用所有請求的入口點是public/index.php。所有的請求被你的web服務(wù)器(Apache/Nginx)配置定向到這個文件。index.php代碼很少。它只是加載其它框架的簡單起點。

index.php首先加載Composer生成的autoloader定義,然后從bootstrap/app.php中腳本獲取Laravel application實例。Laravel第一個動作就是創(chuàng)建一個application或者說service container實例。

HTTP/Console 核心

下一步,進來的請求會根請求類型發(fā)送到HTTP Kernel或者Console Kernel。這2個核心處在所有請求經(jīng)過的中心位置?,F(xiàn)在,我們只是把重心放在Http Kernel,它位于app/Http/Kernel.php。
Http Kernel繼承于Illuminate\Foundation\Http\Kernel,它在bootstrappers數(shù)組里定義一些引導程序,它們會在請求被處理前運行。這些引導程序的作用是配置錯誤處理、配置日志、確定應(yīng)用環(huán)境,然后執(zhí)行一些請求被實際操作前需要做的任務(wù)。
Http Kernel還定義了一些Http middleware,所有請求被應(yīng)用程序使用前必須通過它們。這些中間件負責HttpSession的讀寫,確定應(yīng)用是否在維修狀態(tài),核實CSRF token等等。

HTTP Kernel的 handle方法的方法簽名很簡單:接收一個Request然后返回 Response。想象一下,Kernel變成一個象征整個應(yīng)用程序的大黑盒,給它灌Http Request然后它還給你HTTP Response

服務(wù)提供者

Kernel最重要的引導動作之一就是為應(yīng)用程序加載service providers。所有服務(wù)提供者被配置在config/app.php配置文件中的providers數(shù)組中。所有providers的register方法會先被調(diào)用,一旦所有providers都注冊了,就會呼叫boot方法。
Service providers的職責是引導框架中各種各樣的組件,比如數(shù)據(jù)庫,隊列,驗證和路由組件。由于引導和配置了框架提供的每個特色服務(wù),它們是整個Laravel引導程序中最重要的部分。

分發(fā)請求

當應(yīng)用被引導完,服務(wù)提供者被注冊好之后,Request將被移交給路由器來分發(fā)。路由器將把請求發(fā)送給一個路由或者控制器以及任何路由特性的中間件。

關(guān)注服務(wù)提供者

毫無疑問,服務(wù)器提供者是引導Laravel應(yīng)用的關(guān)鍵。應(yīng)用實例被創(chuàng)建,服務(wù)提供者被注冊,最后獲取請求來引導應(yīng)用。就是那么簡單。

深刻理解Laravel應(yīng)用如何通過服務(wù)提供者被創(chuàng)建和引導起來是很有價值的。當然,服務(wù)提供者默認被存放在app/Providers目錄下。

默認地,AppServiceProvider里面相當干凈。這個provider很重要,你可以在里面添加你應(yīng)用自己的引導程序和服務(wù)容器綁定。當然,對于大型應(yīng)用,你可能希望創(chuàng)建多個service provider,各自都帶一個更顆?;囊龑С绦颉?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 先說幾句廢話,調(diào)和氣氛。事情的起由來自客戶需求頻繁變更,偉大的師傅決定橫刀立馬的改革使用新的框架(created ...
    wsdadan閱讀 3,194評論 0 12
  • 路由 路由(routing)就是通過互聯(lián)的網(wǎng)絡(luò)把信息從源地址傳輸?shù)侥康牡刂返幕顒?。路由發(fā)生在OSI網(wǎng)絡(luò)參考模型中的...
    Dearmadman閱讀 2,959評論 2 9
  • 原文鏈接 必備品 文檔:Documentation API:API Reference 視頻:Laracasts ...
    layjoy閱讀 8,712評論 0 121
  • 經(jīng)常會想,如果生活是一部電影的話,絕不會有一個編劇敢編造我這樣的劇情。不是因為電影會因此變得平庸至極,索然無味,而...
    MeGerpi閱讀 193評論 0 0

友情鏈接更多精彩內(nèi)容