W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
當您使用「真實世界」中的任何工具時,若能了解它是如何運作的,您會更具信心。開發(fā)應用程序也是一樣。當您明白您的開發(fā)工具運作的方式,使用它們時,您會感到更舒適、更有信心。
這份文檔的目的在給予您一個優(yōu)良且高端的概述,關于 Laravel 框架是如何「運作」的。當您越了解整個框架,這些事情便不再那么令人感到「神奇」,而您在建立應用程序時也會更具信心。
若您目前還無法了解所有的術語,不要灰心!只要試著對現(xiàn)在提到的東西有個基本掌握,您的知識將會隨著您探索這份文檔其他章節(jié)的同時跟著成長。
public/index.php
這個文件是對 Laravel 應用程序所有請求的進入點。所有的請求都通過您網(wǎng)頁服務器(Apache / Nginx)的配置導向這個文件。 index.php
這個文件并沒有太多的代碼。更確切地說,它只是個起始點,用來加載框架其他的部分。
index.php
加載由 Composer 產(chǎn)生的自動加載器定義,并接收由 bootstrap/app.php
文件所產(chǎn)生的 Laravel 應用程序?qū)嵗?。Laravel 自身的第一個動作就是創(chuàng)建一個應用程序 / 服務容器的實例。
接下來,進入應用程序的請求的會被送往 HTTP 核心或終端核心,視該請求的種類而定。這兩種核心是所有請求流向的中心位置?,F(xiàn)在開始,我們只將焦點放在 HTTP 核心,它位于 app/Http/Kernel.php
。
HTTP 核心擴展了 Illuminate\Foundation\Http\Kernel
類,它定義了一個 bootstrappers
數(shù)組,在請求被執(zhí)行前會執(zhí)行。這些啟動器(bootstrappers)會進行配置錯誤處理,日志記錄,偵測應用程序環(huán)境,以及其他在請求真正被處理之前,需要完成的工作。
HTTP 核心也定義了一份 HTTP 中間件清單,所有的請求在被應用程序處理之前都必須經(jīng)過它們。這些中間件有負責處理 HTTP session 的讀寫,決定應用程序是否處于維護模式,查驗跨站請求偽造(CSRF)標記,以及其他更多的功能。
HTTP 核心 handle
方法的方法簽名相當簡單:它接收一個 Request
并返回一個 Response
。把核心想像成一個大的黑盒子,用來代表你整個的應用程序。對它輸入 HTTP 請求,它將返回 HTTP 響應。
最重要的核心啟動行為之一,是加載您的應用程序的服務提供者。所有應用程序的服務提供者,都在 config/app.php
配置文件的 providers
數(shù)組中被配置。首先,對所有的提供者調(diào)用 register
方法,一旦所有的提供者都被注冊之后,boot
方法也會被調(diào)用。
當應用程序啟動且所有的服務提供者都被注冊之后,Request
將被移轉(zhuǎn)給路由器進行分派。路由器會將請求分派給路由或控制器,并執(zhí)行任何特定路由的中間件。
服務提供者是啟動 Laravel 應用程序的真正關鍵。創(chuàng)建應用程序?qū)嵗?,注冊服務提供者,并將請求移轉(zhuǎn)至已啟動的應用程序。真的就是這么簡單!
能確實掌握 Laravel 應用程序是如何建立,并通過服務提供者啟動是很有價值的。當然,您應用程序的默認服務提供者存放在 app/Providers
這個目錄中。
AppServiceProviders
默認幾乎是空的。此提供者是一個很好的地方,可讓您加入您應用程序自身的啟動及對服務容器的綁定。當然,對大型應用程序而言,您可能希望創(chuàng)建若干個服務提供者,每一個都具備更精細的啟動類型。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: