* * * * *
[TOC]
## 簡介
在「日常生活」中使用任何工具時, 如果理解了該工具的工作原理,使用時能更加運用自如。這對應用開發來說也一樣,當你能真正懂得一個功能背后實現原理時,你就離成為大神不遠了。
文檔存在目的是為了讓你更加清晰地了解 Laravel 框架是如何工作。通過更好地了解整個框架,讓一切都不再感覺很「神奇」。相信我,這有助于你更加清楚自己在做什么,對自己想做的事情更加胸有成竹。就算你不明白所有的術語,也不用因此失去信心!只要多一點嘗試、學著如何運用,隨著你瀏覽文檔的其他部分,你的知識一定會因此增長。
## 生命周期概述
### 開始
`public/index.php`?文件是所有對 Laravel 應用程序的請求的入口點。而所有的請求都是經由你的 Web 服務器(Apache/Nginx)通過配置引導到這個文件。`index.php`?文件不包含太多的代碼,卻是加載框架的起點。
`index.php`?文件加載 Composer 生成定義的自動加載器,然后從?`bootstrap/app.php`?腳本中檢索 Laravel 應用程序的實例。Laravel 本身采取的第一個動作是創建一個 application/?[service container](http://www.hmoore.net/tonyyu/laravel_5_6/786056)?的實例。
### HTTP / 控制內核
接下來,根據進入應用程序的請求類型來將傳入的請求發送到 HTTP 內核或控制臺內核。而這兩個內核是用來作為所有請求都要通過的中心位置。現在,我們先看看位于?`app/Http/Kernel.php`?中的 HTTP 內核。
HTTP 內核繼承了?`Illuminate\Foundation\Http\Kernel`?類,它定義了在執行請求之前運行的?`bootstrappers`?數組。這個數組負責在實際處理請求之前完成這些內容:配置錯誤處理、配置日志記錄、?[檢測應用環境](http://www.hmoore.net/tonyyu/laravel_5_6/786051#_6)?以及執行其他需要完成的任務。
HTTP 內核還定義了所有請求被應用程序處理之前必須經過的 HTTP?[中間件](http://www.hmoore.net/tonyyu/laravel_5_6/786089)?的列表。這些中間件處理?[HTTP 會話](http://www.hmoore.net/tonyyu/laravel_5_6/786180)?的讀寫、確定應用程序是否處于維護模式、?[驗證 CSRF 令牌](http://www.hmoore.net/tonyyu/laravel_5_6/786094)?等。
HTTP 內核的?`handle`?方法的方法簽名非常簡單:接收?`Request`?并返回?`Response`?。可以把內核當作是代表整個應用程序的大黑盒,給它 HTTP 請求,它就返回 HTTP 響應。
#### 服務提供器
最重要的內核引導操作之一是加載應用程序的?[服務提供器](http://www.hmoore.net/tonyyu/laravel_5_6/786057)?。應用程序的所有服務提供器都在?`config/app.php`?配置文件的?`providers`?數組中配置。首先,所有提供器都會調用?`register`?方法,接著,由?`boot`?方法負責調用所有被注冊提供器。
服務提供器負責引導所有框架的各種組件,如數據庫、隊列、驗證和路由組件。也就是說,框架提供的每個功能都由它們來引導并配置。因此也可以說,服務提供器是整個 Laravel 引導過程中最重要的方面。
#### 分配請求
一旦引導了應用程序且注冊所有服務提供器,`Request`?請求就會被轉交給路由器來進行調度。路由器將請求發送到路由或控制器或任何運行于路由的特定中間件。
## 聚焦服務提供器
服務提供器是引導 Laravel 應用程序真正的關鍵。創建應用程序實例、注冊服務提供器,并將請求交給被引導的應用程序。就是這么簡單!
牢牢掌握 Laravel 應用程序如何通過服務提供器來構建和引導是非常有價值的。應用程序的默認服務提供器存儲在?`app/Providers`?目錄中。
默認情況下,`AppServiceProvider`?沒什么內容。這個提供器是用來添加自定義的應用程序引導和服務容器綁定。對于大型應用程序來說,可以創建幾個服務提供器,讓每個服務提供器都具有更精細的引導類型。
- 前言
- 翻譯說明
- 發行說明
- 升級指南
- 貢獻導引
- 入門指南
- 安裝
- 配置信息
- 文件夾結構
- Homestead
- Valet
- 部署
- 核心架構
- 請求周期
- 服務容器
- 服務提供者
- Facades
- Contracts
- 基礎功能
- 路由
- 中間件
- CSRF 保護
- 控制器
- 請求
- 響應
- 視圖
- URL
- Session
- 表單驗證
- 錯誤
- 日志
- 前端開發
- Blade 模板
- 本地化
- 前端指南
- 編輯資源 Mix
- 安全相關
- 用戶認證
- Passport OAuth 認證
- 用戶授權
- 加密解密
- 哈希
- 重置密碼
- 綜合話題
- Artisan 命令行
- 廣播系統
- 緩存系統
- 集合
- 事件系統
- 文件存儲
- 輔助函數
- 郵件發送
- 消息通知
- 擴展包開發
- 隊列
- 任務調度
- 數據庫
- 快速入門
- 查詢構造器
- 分頁
- 數據庫遷移
- 數據填充
- Redis
- Eloquent ORM
- 快速入門
- 模型關聯
- Eloquent 集合
- 修改器
- API 資源
- 序列化
- 測試相關
- 快速入門
- HTTP 測試
- 瀏覽器測試 Dusk
- 數據庫測試
- 測試模擬器
- 官方擴展包
- Cashier 交易工具包
- Envoy 部署工具
- Horizon
- Scout 全文搜索
- Socialite 社會化登錄