Skip to main content
Laravel 11 以「Slim Application Skeleton」為名,大幅變更了應用程式結構。若您中途加入了仍以舊結構升級的專案,或是以 Laravel 10 之前的書籍與教學學習,會容易感到困惑。本文整理了 Laravel 11 發布當時 Laracasts 論壇及 Stack Overflow 上常見的問題。
本 FAQ 以新專案(Laravel 11 以後)為對象。既有專案的升級步驟請參考遷移指南
新結構中,變更頻率較低的 config 檔案已從專案中移除。這些檔案改用框架內的 config/專案端的 config/ 與框架端的 config/ 會合併,以專案端優先。當需要自訂時再建立檔案即可生效。
在 Laravel 11 的新結構中,App\Http\Controllers\Controller 是空的類別,未繼承 Illuminate\Routing\Controller,也未使用 ValidatesRequests / AuthorizesRequests trait。參考:Laravel 10 的 Controller vs Laravel 11 的 Controller替代方法:
若使用頻繁,也可以將 App\Http\Controllers\Controller 恢復為 Laravel 10 的樣式。
新結構中已廢除 app/Http/Kernel.php,中介層設定改在 bootstrap/app.phpwithMiddleware() 進行。
自訂中介層的檔案本身仍然建立於 app/Http/Middleware/
$this->middleware()Illuminate\Routing\Controller 的功能,新結構中空的基底控制器無法使用。改為實作 HasMiddleware 介面並定義 middleware() 方法。
Laravel 13 以後也可使用 #[Middleware] Attribute。
參考:Controller Middleware
authorizeResource() 依賴 AuthorizesRequests trait,因此在新結構中空的基底控制器無法使用。對應方法有幾種。1. 將基底控制器恢復為 Laravel 10 的樣式(最為簡便)
如此便可使用 $this->authorizeResource()2. 在各方法上加上 Laravel 13 的 #[Authorize] Attribute
新結構中已廢除 app/Console/Kernel.php,排程的設定位置也已變更。寫在 routes/console.php(推薦):
寫在 bootstrap/app.php
新結構中已廢除 EventServiceProvider,事件與監聽器不再需要手動註冊。自動註冊機制: 只要在監聽器類別的 handle() 方法引數中以型別宣告事件類別,即會自動註冊。
如需手動註冊,可於 AppServiceProvider::boot() 內進行。
新結構中,服務提供者的清單管理從 config/app.php 改為 bootstrap/providers.php
artisan make:provider 建立的提供者會自動被加入此檔案。
新結構中已廢除 app/Exceptions/Handler.php,例外處理的設定改在 bootstrap/app.phpwithExceptions() 進行。
路由的自訂在 bootstrap/app.phpwithRouting() 中進行。加入路由檔案:
完全控制(等同於 Laravel 10 的 RouteServiceProvider):指定 using 後,Laravel 預設的路由註冊會完全停用,一切由您自行控制。
config/app.php 加入 providers 鍵值後,會與框架內的 config/app.php 合併並生效。
replace() 方法可將預設提供者替換為自訂實作。
Laravel 11 之後,API 功能預設不再包含,需要時另行安裝。
此指令會建立與設定以下內容:
  • routes/api.php
  • API 認證用的 Laravel Sanctum 設定
  • bootstrap/app.php 中的 API 路由註冊
Laravel 11 之後,廣播功能預設也不再包含,需要時另行安裝。
此指令會建立與設定以下內容:
請確認 bootstrap/app.php 的內容。Laravel 11 以後的新結構(或已遷移):
仍以 Laravel 10 舊結構升級的專案:
若為 return Application::configure(... 的形式即為新結構,否則就是仍以舊結構升級的專案。將舊結構專案遷移至新結構的步驟請參考遷移指南

相關頁面

Laravel 11 以後的應用程式結構

完整說明新的應用程式結構全貌與 ApplicationBuilder 的內部實作。

從舊結構到新結構的遷移指南

說明從 Laravel 10 的舊應用程式結構遷移至 Laravel 11 以後新結構的步驟。
最後修改於 2026年8月2日