# 簡介
當我們使用現實世界中的任何工具時,如果理解了該工具的工作原理,那么用起來就會得心應手,應用開發也是如此。當你理解了開發工具如何工作,用起來就會更加游刃有余。
這篇文檔的目標就是從更高層面向你闡述 Laravel 框架的工作原理。通過對框架更全面的了解,一切都不再那么神秘,你將會更加自信地構建應用。如果你不能馬上理解所有這些條款,不要失去信心!先試著掌握一些基本的東西,你的知識水平將會隨著對文檔的探索而不斷提升。
# 生命周期概覽
## 第一件事
Laravel 應用的所有請求入口都是 `public/index.php` 文件,所有請求都會被 web 服務器(Apache/Nginx)導向這個文件。 `index.php` 文件包含的代碼并不多,但是,這里是加載框架其它部分的起點。
`index.php` 文件載入 Composer 生成的自動加載設置,然后從 `bootstrap/app.php` 腳本獲取 Laravel 應用實例,Laravel 的第一個動作就是創建`服務容器`實例。
**HTTP/Console 內核**
接下來,請求被發送到 HTTP 內核或 Console 內核(分別用于處理 Web 請求和 Artisan 命令),這取決于進入應用的請求類型。這兩個內核是所有請求都要經過的中央處理器,現在,就讓我們聚焦在位于 `app/Http/Kernel.php` 的 HTTP 內核。
HTTP 內核繼承自 `Illuminate\Foundation\Http\Kernel` 類,該類定義了一個 `bootstrappers` 數組,這個數組中的類在請求被執行前運行,這些 `bootstrappers` 配置了錯誤處理、日志、`檢測應用環境`以及其它在請求被處理前需要執行的任務。
HTTP 內核還定義了一系列所有請求在處理前需要經過的 HTTP `中間件`,這些中間件處理 `HTTP 會話`的讀寫、判斷應用是否處于維護模式、驗證 `CSRF 令牌`等等。
HTTP 內核的 `handle` 方法簽名相當簡單:獲取一個 `Request`,返回一個 `Response`,可以把該內核想象作一個代表整個應用的大黑盒子,輸入 HTTP 請求,返回 HTTP 響應。
**服務提供者**
內核啟動過程中最重要的動作之一就是為應用載入`服務提供者`,應用的所有服務提供者都被配置在 `config/app.php` 配置文件的 `providers` 數組中。首先,所有提供者的 `register` 方法被調用,然后,所有提供者被注冊之后,`boot` 方法被調用。
服務提供者負責啟動框架的所有各種各樣的組件,比如數據庫、隊列、驗證器,以及路由組件等,正是因為他們啟動并配置了框架提供的所有特性,所以服務提供者是整個 Laravel 啟動過程中最重要的部分。
**分發請求**
一旦應用被啟動并且所有的服務提供者被注冊,`Request` 將會被交給路由器進行分發,路由器將會分發請求到路由或控制器,同時運行所有路由指定的中間件。
# 聚焦服務提供者
服務提供者是啟動 Laravel 應用中最關鍵的部分,應用實例被創建后,服務提供者被注冊,請求被交給啟動后的應用進行處理,整個過程就是這么簡單!
對 Laravel 應用如何通過服務提供者構建和啟動有一個牢固的掌握非常有價值,當然,應用默認的服務提供者存放在 `app/Providers` 目錄下。
默認情況下,`AppServiceProvider` 是空的,這里是添加自定義啟動和服務容器綁定的最佳位置,當然,對大型應用,你可能希望創建多個服務提供者,每一個都有著更加細粒度的啟動。
> 注:更多細節,可參考 Laravel 5.x 啟動過程分析。
- 序言
- 新版特性
- 快速入門
- 升級指南
- 貢獻指南
- API文檔
- 安裝配置
- 目錄結構
- Homestead
- Valet
- 部署
- 核心概念
- 請求生命周期
- 服務容器
- 服務提供者
- 門面(Facades)
- 契約(Contracts)
- 框架基礎
- 路由
- 中間件
- CSRF 保護
- 控制器
- 請求
- 響應
- 視圖
- 生成 URL
- Session
- 驗證
- 錯誤處理
- 日志
- 前端開發
- Blade 模板
- 本地化
- 前端腳手架
- 編譯前端資源(Laravel Mix)
- 安全系列
- 登錄認證
- API 認證
- 授權
- 加密
- 哈希
- 重置密碼
- 進階系列
- Artisan 控制臺
- 集合
- 廣播
- 緩存
- 事件
- 文件存儲
- 輔助函數
- 郵件
- 通知
- 擴展包開發
- 隊列
- 任務調度
- 數據庫操作
- 快速入門
- 查詢構建器
- 分頁
- 遷移
- 數據填充
- Redis
- Eloquent ORM
- 快速入門
- 關聯關系
- 集合
- 訪問器 & 修改器
- API 資源類
- 序列化
- 應用測試
- 快速入門
- HTTP 測試
- 瀏覽器測試
- 數據庫測試
- 模擬
- 官方擴展包
- Cashier(訂閱支付解決方案)
- Envoy(遠程操作解決方案)
- Horizon(隊列系統解決方案)
- Passport(API 認證解決方案)
- Scout(全文搜索解決方案)
- Socialite(第三方登錄解決方案)
- 相關下載
- Laravel 5.6 中文文檔離線版
- Laravel 5.6 一鍵安裝包