類別:後端相關
| 發布於 2025-06-21 16:29
Laravel 應用程式生命週期
在程式開發中,"生命週期"指的是應用程式在執行時所經歷的階段序列,從啟動到結束,每一階段執行特定任務。
生命週期階段
1. 啟動階段
當使用者發出請求時,Laravel 會初始化應用環境並載入必要設定與元件:
public/index.php: 應用程式入口,載入 Composer 自動載入器與
bootstrap/app.php。
.env: 環境設定檔,包含資料庫、金鑰、API 設定等。
config/app.php: 設定應用程式名稱、時區、語言、服務提供者等。
bootstrap/app.php: 建立應用容器,註冊服務提供者與錯誤處理。
AppServiceProvider: 註冊全域服務與啟動行為。
2. 路由階段
Laravel 根據請求 URI 分派至對應控制器方法:
routes/web.php:定義網頁路由。
routes/api.php:定義 API 路由。
app/Providers/RouteServiceProvider.php:載入路由群組、命名空間與中介層。
3. 控制器階段
路由對應控制器方法負責執行邏輯與資料處理:
- 控制器放置於
app/Http/Controllers。
- 方法中執行驗證、資料庫存取、回應生成等行為。
4. 視圖階段
控制器傳資料至視圖,由 Blade 模板產出 HTML:
- 視圖檔案通常位於
resources/views。
- 支援資料傳遞、模板繼承、組件等。
5. 結束階段
Laravel 回傳回應至客戶端後,執行清理程序:
- 執行
terminate() 方法(如 middleware)。
- 關閉資料庫連線、釋放記憶體。
- 停用所有服務提供者。
關鍵檔案說明
index.php
Laravel 的 HTTP 請求入口。主要功能:
- 檢查維護模式。
- 載入 Composer autoload。
- 建立應用實例與核心 Kernel。
- 處理並送出回應。
bootstrap/app.php
Laravel 核心啟動程式:
- 建立服務容器。
- 註冊 HTTP Kernel、Console Kernel、例外處理器。
- 返回應用實例供
index.php 使用。
.env
設定應用運行環境:
- 用於區分 local/staging/production。
- 儲存敏感資訊,如 API key、DB 密碼等。
config/app.php
應用主要設定檔:
- APP_NAME、APP_ENV、APP_KEY 等。
- 設定服務提供者與類別別名。
AppServiceProvider
register():註冊服務容器綁定。
boot():設定初始化邏輯(如共用資料)。
RouteServiceProvider
- 註冊
web 與 api 路由群組。
- 定義路由命名空間與 middleware。
- 支援路由模型綁定與群組設定。
routes/web.php 與
routes/api.php
- 定義 HTTP 路由規則。
- 指定 URI、請求方法與控制器方法對應。
app/Http/Controllers
- 控制器負責處理 HTTP 請求與業務邏輯。
- 使用 Laravel 的依賴注入與資源模型。
範例:UserController
整理自 Laravel 官方文件與實務經驗,適用於 Laravel 8+。
Laravel 應用程式生命週期
生命週期階段
1. 啟動階段
當使用者發出請求時,Laravel 會初始化應用環境並載入必要設定與元件:
public/index.php: 應用程式入口,載入 Composer 自動載入器與bootstrap/app.php。.env: 環境設定檔,包含資料庫、金鑰、API 設定等。config/app.php: 設定應用程式名稱、時區、語言、服務提供者等。bootstrap/app.php: 建立應用容器,註冊服務提供者與錯誤處理。AppServiceProvider: 註冊全域服務與啟動行為。2. 路由階段
Laravel 根據請求 URI 分派至對應控制器方法:
routes/web.php:定義網頁路由。routes/api.php:定義 API 路由。app/Providers/RouteServiceProvider.php:載入路由群組、命名空間與中介層。3. 控制器階段
路由對應控制器方法負責執行邏輯與資料處理:
app/Http/Controllers。4. 視圖階段
控制器傳資料至視圖,由 Blade 模板產出 HTML:
resources/views。5. 結束階段
Laravel 回傳回應至客戶端後,執行清理程序:
terminate()方法(如 middleware)。關鍵檔案說明
index.php
Laravel 的 HTTP 請求入口。主要功能:
bootstrap/app.php
Laravel 核心啟動程式:
index.php使用。.env
設定應用運行環境:
config/app.php
應用主要設定檔:
AppServiceProvider
register():註冊服務容器綁定。boot():設定初始化邏輯(如共用資料)。RouteServiceProvider
web與api路由群組。routes/web.php 與 routes/api.php
app/Http/Controllers
範例:UserController
namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; class UserController extends Controller { public function index() { $users = User::all(); return view('users.index', ['users' => $users]); } public function show(Request $request, $id) { $user = User::find($id); return view('users.show', ['user' => $user]); } }整理自 Laravel 官方文件與實務經驗,適用於 Laravel 8+。