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

  • 註冊 webapi 路由群組。
  • 定義路由命名空間與 middleware。
  • 支援路由模型綁定與群組設定。

routes/web.php 與 routes/api.php

  • 定義 HTTP 路由規則。
  • 指定 URI、請求方法與控制器方法對應。

app/Http/Controllers

  • 控制器負責處理 HTTP 請求與業務邏輯。
  • 使用 Laravel 的依賴注入與資源模型。

範例: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+。