鍍金池/ 教程/ PHP/ 一次請求的生命周期
門面
Laravel Homestead
安裝及配置
測試
HTTP 中間件
加密
升級指南
幫助函數(shù)
應(yīng)用目錄結(jié)構(gòu)
集合
新手入門指南-簡單任務(wù)管理系統(tǒng)
任務(wù)調(diào)度
查詢構(gòu)建器
視圖
驗證
Laravel Cashier(訂購&支付&發(fā)票)
本地化
隊列
調(diào)整器
分頁
文件系統(tǒng)/云存儲
貢獻代碼
哈希
HTTP 控制器
緩存
遷移
HTTP 請求
Laravel Elixir
發(fā)行版本說明
Envoy 任務(wù)運行器(SSH任務(wù))
序列化
Session
起步
帶用戶功能的任務(wù)管理系統(tǒng)
起步
用戶授權(quán)
郵件
事件
填充數(shù)據(jù)
HTTP 路由
服務(wù)提供者
Blade 模板引擎
包開發(fā)
用戶認證
Artisan 控制臺
HTTP 響應(yīng)
集合
服務(wù)容器
關(guān)聯(lián)關(guān)系
一次請求的生命周期
契約
Redis
錯誤&日志

一次請求的生命周期

1、簡介

當我們使用現(xiàn)實世界中的任何工具時,如果理解了該工具的工作原理,那么用起來就會得心應(yīng)手,應(yīng)用開發(fā)也是如此。當你理解了開發(fā)工具如何工作,用起來就會更加游刃有余。

本文檔的目標就是從一個更好、更高層面向你闡述 Laravel 框架的工作原理。通過對框架更全面的了解,一切都不再那么神秘,你將會更加自信的構(gòu)建應(yīng)用。

如果你不能馬上理解所有這些條款,不要失去信心!先試著掌握一些基本的東西,你的知識將會隨著對本文檔的探索而不斷提高。

2、生命周期概覽

2.1 第一件事

Laravel 應(yīng)用的所有請求入口都是 public/index.php 文件,所有請求都會被 web 服務(wù)器(Apache/Nginx)導向這個文件。index.php 文件包含的代碼并不多,但是,這里是加載框架其它部分的起點。 index.php 文件載入 Composer 生成的自動加載設(shè)置,然后從 bootstrap/app.php 腳本獲取 Laravel 應(yīng)用實例,Laravel 的第一個動作就是創(chuàng)建服務(wù)容器實例。

2.2 HTTP/Console 內(nèi)核

接下來,請求被發(fā)送到 HTTP 內(nèi)核或 Console 內(nèi)核,這取決于進入應(yīng)用的請求類型。這兩個內(nèi)核是所有請求都要經(jīng)過的中央處理器,現(xiàn)在,就讓我們聚焦在位于 app/Http/Kernel.php 的 HTTP 內(nèi)核。

HTTP 內(nèi)核繼承自 Illuminate\Foundation\Http\Kernel 類,該類定義了一個 bootstrappers 數(shù)組,這個數(shù)組中的類在請求被執(zhí)行前運行,這些 bootstrappers 配置了錯誤處理、日志、檢測應(yīng)用環(huán)境以及其它在請求被處理前需要執(zhí)行的任務(wù)。

HTTP 內(nèi)核還定義了一系列所有請求在處理前需要經(jīng)過的 HTTP 中間件,這些中間件處理HTTP 會話的讀寫、判斷應(yīng)用是否處于維護模式、驗證 CSRF 令牌等等。

HTTP 內(nèi)核的標志性方法 handle 處理的邏輯相當簡單:獲取一個 Request,返回一個 Response,把該內(nèi)核想象作一個代表整個應(yīng)用的大黑盒子,輸入 HTTP 請求,返回 HTTP 響應(yīng)。

2.2.1 服務(wù)提供者

內(nèi)核啟動過程中最重要的動作之一就是為應(yīng)用載入服務(wù)提供者,應(yīng)用的所有服務(wù)提供者都被配置在 config/app.php 配置文件的 providers 數(shù)組中。首先,所有提供者的 register 方法被調(diào)用,然后,所有提供者被注冊之后,boot 方法被調(diào)用。

服務(wù)提供者負責啟動框架的所有各種各樣的組件,比如數(shù)據(jù)庫、隊列、驗證器,以及路由組件等,正是因為他們啟動并配置了框架提供的所有特性,服務(wù)提供者是整個 Laravel 啟動過程中最重要的部分。

2.2.2 分發(fā)請求

一旦應(yīng)用被啟動并且所有的服務(wù)提供者被注冊,Request 將會被交給路由器進行分發(fā),路由器將會分發(fā)請求到路由或控制器,同時運行所有路由指定的中間件。

3、聚焦服務(wù)提供者

服務(wù)提供者是啟動 Laravel 應(yīng)用中最關(guān)鍵的部分,應(yīng)用實例被創(chuàng)建后,服務(wù)提供者被注冊,請求被交給啟動后的應(yīng)用進行處理,整個過程就是這么簡單!

對 Laravel 應(yīng)用如何通過服務(wù)提供者構(gòu)建和啟動有一個牢固的掌握非常有價值,當然,應(yīng)用默認的服務(wù)提供者存放在 app/Providers 目錄下。

默認情況下,AppServiceProvider 是空的,這里是添加自定義啟動和服務(wù)容器綁定的最佳位置,當然,對大型應(yīng)用,你可能希望創(chuàng)建多個服務(wù)提供者,每一個都有著更加細粒度的啟動。

上一篇:Laravel Homestead下一篇:Redis