首頁 >php框架 >Laravel >laravel 啟動過程是什麼

laravel 啟動過程是什麼

PHPz
PHPz原創
2023-04-23 09:10:50845瀏覽

Laravel是一款受歡迎的PHP開源框架,它的啟動過程與其他框架類似,都需要經歷一定的準備工作。本文將針對Laravel的啟動過程進行詳細介紹。

一、入口檔案index.php

Laravel的入口檔案是index.php,所有請求都會透過這個檔案進入框架。在index.php中,我們可以看到以下程式碼區段:

/*
|--------------------------------------------------------------------------
| Turn On The Lights
|--------------------------------------------------------------------------
|
| We need to illuminate PHP development, so let us turn on the lights.
| This bootstraps the framework and gets it ready for use, then it
| will load up this application so that we can run it and send
| the responses back to the browser and delight our users.
|
*/

$app = require_once __DIR__.'/../bootstrap/app.php';

這段註解解釋了程式碼的作用,也可以看到require_once引進了bootstrap/app.php這個文件,也就是Laravel的啟動文件。

二、啟動檔案bootstrap/app.php

在app.php檔案中,我們可以主要看到三個關鍵類別的實例化:$app、$kernel、$router。下面我們來逐一介紹。

  1. $app

$app是Illuminate\Foundation\Application類別的實例,是整個框架的核心,它管理了Laravel 應用程式的容器並提供了許多強而有力的功能,如路由、請求處理、事件、cookie、session、異常處理等等。接下來我們先來看看$app如何初始化。

在$app的建構子中,它首先繼承了Illuminate\Container\Container類,產生了一個容器實例。在這個容器實例中我們可以綁定和注入我們需要的服務。

接著,它會註冊Laravel的所有核心容器服務,如路由、日誌、視圖等。

最後,它會載入Laravel設定文件,這些設定檔存放在config目錄下,並將其放入$app實例的屬性中。

  1. $kernel

$kernel是Illuminate\Contracts\Http\Kernel介面的一個實例,它是Laravel的HTTP內核,負責處理所有的HTTP請求,是連接請求和回應的橋樑。 $kernel的主要作用是呼叫請求的中間件,並將請求傳遞給路由器,最後將回應傳遞給客戶端。

在$app實例化後,它會呼叫$app->make()方法然後透過容器解析取得$kernel的實例。在這個過程中,$app的容器會解析$config['app']['middleware']配置並註冊中間件,然後將中間件儲存到$kernel的實例中。

  1. $router

$router是Illuminate\Routing\Router類別的實例,它是Laravel的路由器,處理所有的路由解析和分發。 $router的主要作用是將請求和相應的操作進行匹配,為請求將被處理的路由儲存在請求實例的屬性中。

在$app實例化後,它會使用對應的設定來產生路由器實例,並透過$app實例的instance方法註冊到Laravel的容器中。

此外,還需要提到的是,$app會將請求實例及其它相關實例綁定到容器中,以供中間件、路由和控制器使用。容器綁定完成後,Laravel就完成了準備工作。

三、調度請求

在Laravel中,請求的調度流程如下:

1.從客戶端發起HTTP請求。

2.請求先經過Laravel的public/index.php文件,並轉送到bootstrap/app.php檔案中。

3.在bootstrap/app.php檔案中,Laravel產生$app、$kernel和$router的實例,並將請求實例綁定到容器中。然後$app會呼叫$kernel的handle方法處理請求。

4.在$kernel的handle方法中,Laravel透過容器解析並依序呼叫註冊的中間件,然後將請求轉送給路由器。

5.在路由器中,Laravel從請求中提取URI,然後將其與路由器實例中定義的所有路由進行匹配。如果找到匹配的路由,Laravel就將控制權傳遞給對應的控制器。

6.控制器是請求的主要處理程序,它會呼叫業務邏輯程式碼處理請求,並最終將結果作為回應傳回給客戶端。

7.如果路由器沒有找到符合的路由,它會將請求傳遞給錯誤處理程序。

8.在錯誤處理程序中,Laravel會根據錯誤的類型和配置,產生對應的回應傳回給客戶端。

以上就是一個Laravel請求的完整流程。透過深入了解Laravel的啟動過程和請求調度流程,我們可以更好的理解它的內部架構和工作原理,從而更好地運用它來處理我們的業務。

以上是laravel 啟動過程是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn