本 FAQ 以新專案(Laravel 11 以後)為對象。既有專案的升級步驟請參考遷移指南。
config 檔案較少
config 檔案較少
新結構中,變更頻率較低的 config 檔案已從專案中移除。這些檔案改用框架內的
config/。專案端的 config/ 與框架端的 config/ 會合併,以專案端優先。當需要自訂時再建立檔案即可生效。沒有 app/Http/Middleware 也無法變更中介層設定 / 沒有 app/Http/Kernel.php
沒有 app/Http/Middleware 也無法變更中介層設定 / 沒有 app/Http/Kernel.php
新結構中已廢除 自訂中介層的檔案本身仍然建立於
app/Http/Kernel.php,中介層設定改在 bootstrap/app.php 的 withMiddleware() 進行。app/Http/Middleware/。控制器中無法使用 $this->middleware()
控制器中無法使用 $this->middleware()
$this->middleware() 是 Illuminate\Routing\Controller 的功能,新結構中空的基底控制器無法使用。改為實作 HasMiddleware 介面並定義 middleware() 方法。#[Middleware] Attribute。沒有 app/Console/Kernel.php 導致無法設定 Schedule
沒有 app/Console/Kernel.php 導致無法設定 Schedule
新結構中已廢除 寫在
app/Console/Kernel.php,排程的設定位置也已變更。寫在 routes/console.php(推薦):bootstrap/app.php:不知道事件與監聽器的註冊方式
不知道事件與監聽器的註冊方式
新結構中已廢除 如需手動註冊,可於
EventServiceProvider,事件與監聽器不再需要手動註冊。自動註冊機制: 只要在監聽器類別的 handle() 方法引數中以型別宣告事件類別,即會自動註冊。AppServiceProvider::boot() 內進行。不知道如何在 config/app.php 新增服務提供者
不知道如何在 config/app.php 新增服務提供者
新結構中,服務提供者的清單管理從 以
config/app.php 改為 bootstrap/providers.php。artisan make:provider 建立的提供者會自動被加入此檔案。沒有 app/Exceptions/Handler.php
沒有 app/Exceptions/Handler.php
新結構中已廢除
app/Exceptions/Handler.php,例外處理的設定改在 bootstrap/app.php 的 withExceptions() 進行。想要自訂路由
想要自訂路由
路由的自訂在 完全控制(等同於 Laravel 10 的
bootstrap/app.php 的 withRouting() 中進行。加入路由檔案:RouteServiceProvider):指定 using 後,Laravel 預設的路由註冊會完全停用,一切由您自行控制。想要替換 Laravel 預設的 ServiceProvider
想要替換 Laravel 預設的 ServiceProvider
在 以
config/app.php 加入 providers 鍵值後,會與框架內的 config/app.php 合併並生效。replace() 方法可將預設提供者替換為自訂實作。沒有 routes/api.php
沒有 routes/api.php
Laravel 11 之後,API 功能預設不再包含,需要時另行安裝。此指令會建立與設定以下內容:
routes/api.php- API 認證用的 Laravel Sanctum 設定
bootstrap/app.php中的 API 路由註冊
沒有 routes/channels.php
沒有 routes/channels.php
想判別中途加入的專案為新結構或舊結構
想判別中途加入的專案為新結構或舊結構
請確認 仍以 Laravel 10 舊結構升級的專案:若為
bootstrap/app.php 的內容。Laravel 11 以後的新結構(或已遷移):return Application::configure(... 的形式即為新結構,否則就是仍以舊結構升級的專案。將舊結構專案遷移至新結構的步驟請參考遷移指南。相關頁面
Laravel 11 以後的應用程式結構
完整說明新的應用程式結構全貌與
ApplicationBuilder 的內部實作。從舊結構到新結構的遷移指南
說明從 Laravel 10 的舊應用程式結構遷移至 Laravel 11 以後新結構的步驟。