Laravel最早接觸是兩個多月前剛開始實習的時候,那時通過網上的學習資料很快便上手,開發(fā)模塊接口。后來沒有什么深入和總結,但是當我剛開始學Laravel的時候,我對Laravel最大的認識就是,框架除了路由、中間件和 MVC 設計以外,基本所有的功能都是以模塊服務的方式提供,而且在學習Laravel的會讓自己有學習設計模式的意識,感覺很受啟發(fā)。下面是對Laravel 5.x 啟動過程以及 Http 請求處理過程的源碼簡要分析。

入口文件

Laravel和大多數(shù)框架一樣采用同樣的單一入口方式,Laravel的入口文件位于public/index.php,所有的請求都通過你的網頁服務器(Apache / Nginx)的設置導向這個文件。index.php 這個文件并沒有太多的代碼。更確切地說,它只是個起始點,用來加載框架的其它部分。

index.php 此文件會加載由 Composer 生成的自動加載器定義,并獲取由 bootstrap/app.php 文件中所生成的 Laravel 應用程序實例。Laravel 自身的第一個動作就是創(chuàng)建一個應用程序/服務容器的實例。

HTTP/終端核心

接下來,進入應用程序的請求的會被送往 HTTP 核心或終端核心,視該請求的種類而定。這兩種核心是所有請求流向的中心位置?,F(xiàn)在開始,我們只將焦點放在 HTTP 核心,它位于 app/Http/Kernel.php。

HTTP 核心擴展了 Illuminate\Foundation\Http\Kernel 類,它定義了一個 bootstrappers 數(shù)組,在請求被運行前會先行運作。這些啟動器設置了錯誤處理、日志記錄、偵測應用程序環(huán)境,并運行其它需要在請求實際處理前就該被完成掉的工作。

HTTP 核心也定義了一份 HTTP 中間件清單,所有的請求在被應用程序處理之前都必須經過它們。這些中間件處理 HTTP session 的讀寫、驗證 CSRF 令牌、決定應用程序是否處于維護模式,以及其它更多任務作。

HTTP 核心 handle 方法的方法簽章相當簡單:接收一個 Request 并返回一個 Response。把核心想像成一個大的黑盒子,代表你完整的應用程序。喂給它 HTTP 請求,它就會傳回 HTTP 響應。

服務提供者

最重要的核心啟動加載行為之一,是加載你的應用程序的服務提供者。應用程序的所有服務提供者,都在 config/app.php 此配置文件的 providers 數(shù)組中被設置。首先,所有提供者的 register 方法會被調用,一旦所有提供者都被注冊之后,boot 方法就會被調用。

服務提供者負責在啟動時加載框架的所有組件,例如數(shù)據(jù)庫、隊列、驗證、以及路由組件。服務提供者啟動加載并設置框架提供的各種功能,是整個 Laravel 啟動加載過程中最重要的面向。

服務提供者是啟動 Laravel 應用程序的真正關鍵。應用程序的實例被創(chuàng)建、服務提供者被注冊、請求被移轉至已啟動的應用程序。真正掌握 Laravel 應用程序是如何創(chuàng)建并通過服務提供者啟動,將是很有價值的。當然,應用程序默認的服務提供者存放在 app/Providers 此一目錄下。

源碼分析過程

上面部分是結合文檔的理論部分,可能會比較難理解,下面通過源碼的方式分析一下整個過程。因為在word文檔上整理的分析過程,而且顯示的效果會比較好,所以整個分析過程就用截圖的方式記錄。

大學生就業(yè)培訓,高中生培訓,在職人員轉行培訓,企業(yè)團訓

大學生就業(yè)培訓,高中生培訓,在職人員轉行培訓,企業(yè)團訓

大學生就業(yè)培訓,高中生培訓,在職人員轉行培訓,企業(yè)團訓

大學生就業(yè)培訓,高中生培訓,在職人員轉行培訓,企業(yè)團訓

大學生就業(yè)培訓,高中生培訓,在職人員轉行培訓,企業(yè)團訓

大學生就業(yè)培訓,高中生培訓,在職人員轉行培訓,企業(yè)團訓

以上包括Laravel 5.x 啟動過程以及 Http 請求處理過程的基本處理流程,大家可以對照框架的源碼一步一步學習,希望能夠幫助大家。