目錄結構
簡介
預設的 Laravel 應用程式結構旨在為大小型應用程式提供一個良好的起點。但是您可以自由地組織您的應用程式。Laravel 對任何給定類別的放置位置幾乎沒有限制 - 只要 Composer 可以自動載入該類別即可。
Laravel 新手嗎?查看 Laravel Bootcamp,在我們引導您建立第一個 Laravel 應用程式的同時,親身體驗框架的旅程。
根目錄
App 目錄
app
目錄包含您應用程式的核心程式碼。我們很快將更詳細地探索此目錄;但是,您應用程式中的幾乎所有類別都將位於此目錄中。
Bootstrap 目錄
bootstrap
目錄包含啟動框架的 app.php
檔案。此目錄還包含一個 cache
目錄,其中包含框架產生的檔案,用於效能優化,例如路由和服務快取檔案。
Config 目錄
顧名思義,config
目錄包含您應用程式的所有設定檔。最好閱讀所有這些檔案,並熟悉您可以使用的所有選項。
Database 目錄
database
目錄包含您的資料庫遷移、模型工廠和填充。如果您願意,您也可以使用此目錄來保存 SQLite 資料庫。
Public 目錄
public
目錄包含 index.php
檔案,該檔案是進入您應用程式的所有請求的入口點,並設定自動載入。此目錄還包含您的資源,例如圖片、JavaScript 和 CSS。
Resources 目錄
resources
目錄包含您的視圖以及您未編譯的原始資源,例如 CSS 或 JavaScript。
Routes 目錄
routes
目錄包含您應用程式的所有路由定義。預設情況下,Laravel 包含兩個路由檔案:web.php
和 console.php
。
web.php
檔案包含 Laravel 放置在 web
中介層群組中的路由,該群組提供 Session 狀態、CSRF 保護和 Cookie 加密。如果您的應用程式未提供無狀態的 RESTful API,那麼您的所有路由很可能都會在 web.php
檔案中定義。
console.php
檔案是您定義所有基於閉包的控制台命令的地方。每個閉包都綁定到一個命令實例,允許以簡單的方法與每個命令的 IO 方法進行互動。即使此檔案未定義 HTTP 路由,它也會定義進入您應用程式的基於控制台的入口點(路由)。您也可以在 console.php
檔案中排程任務。
或者,您可以透過 install:api
和 install:broadcasting
Artisan 命令,為 API 路由 (api.php
) 和廣播通道 (channels.php
) 安裝額外的路由檔案。
api.php
檔案包含旨在無狀態的路由,因此透過這些路由進入應用程式的請求旨在透過權杖進行驗證,並且無法存取 Session 狀態。
channels.php
檔案是您註冊應用程式支援的所有事件廣播通道的地方。
Storage 目錄
storage
目錄包含您的日誌、編譯的 Blade 樣板、基於檔案的 Session、檔案快取和框架產生的其他檔案。此目錄分為 app
、framework
和 logs
目錄。app
目錄可用於儲存您應用程式產生的任何檔案。framework
目錄用於儲存框架產生的檔案和快取。最後,logs
目錄包含您應用程式的日誌檔案。
storage/app/public
目錄可用於儲存使用者產生的檔案,例如應公開存取的個人資料頭像。您應該在 public/storage
建立一個指向此目錄的符號連結。您可以使用 php artisan storage:link
Artisan 命令建立連結。
Tests 目錄
tests
目錄包含您的自動化測試。預設提供範例 Pest 或 PHPUnit 單元測試和功能測試。每個測試類別都應以 Test
字詞作為後綴。您可以使用 /vendor/bin/pest
或 /vendor/bin/phpunit
命令執行測試。或者,如果您想要更詳細且美觀的測試結果呈現方式,可以使用 php artisan test
Artisan 命令執行測試。
Vendor 目錄
vendor
目錄包含您的 Composer 相依性。
App 目錄
您應用程式的大部分都位於 app
目錄中。預設情況下,此目錄以 App
命名空間,並使用 PSR-4 自動載入標準由 Composer 自動載入。
預設情況下,app
目錄包含 Http
、Models
和 Providers
目錄。但是,隨著時間的推移,當您使用 make Artisan 命令來產生類別時,將會在 app 目錄內產生各種其他目錄。例如,在您執行 make:command
Artisan 命令來產生命令類別之前,app/Console
目錄不會存在。
Console
和 Http
目錄都會在各自的章節中進一步說明,但您可以將 Console
和 Http
目錄視為提供應用程式核心的 API。HTTP 協定和 CLI 都是與您的應用程式互動的機制,但實際上不包含應用程式邏輯。換句話說,它們是向您的應用程式發出命令的兩種方式。Console
目錄包含所有 Artisan 命令,而 Http
目錄包含您的控制器、中介層和請求。
app
目錄中的許多類別都可以透過 Artisan 指令產生。要檢視可用的指令,請在終端機中執行 php artisan list make
指令。
廣播目錄
Broadcasting
目錄包含您的應用程式的所有廣播頻道類別。這些類別是使用 make:channel
指令產生的。這個目錄預設不存在,但當您建立第一個頻道時,它會自動為您建立。若要了解更多關於頻道的資訊,請查看關於事件廣播的文件。
Console 目錄
Console
目錄包含您應用程式的所有自訂 Artisan 命令。這些指令可以使用 make:command
指令產生。
Events 目錄
此目錄預設不存在,但會由 event:generate
和 make:event
Artisan 指令自動為您建立。Events
目錄存放事件類別。事件可用於提醒您應用程式的其他部分,指出已發生給定的動作,從而提供極大的彈性和解耦。
Exceptions 目錄
Exceptions
目錄包含您應用程式的所有自訂例外。這些例外可以使用 make:exception
指令產生。
Http 目錄
Http
目錄包含您的控制器、中介層和表單請求。幾乎所有處理進入您應用程式的請求的邏輯都會放在此目錄中。
Jobs 目錄
此目錄預設不存在,但如果您執行 make:job
Artisan 指令,它會自動為您建立。Jobs
目錄存放您應用程式的可佇列任務。任務可以由您的應用程式排入佇列,也可以在目前請求生命週期中同步執行。在目前請求期間同步執行的任務有時被稱為「命令」,因為它們是命令模式的實作。
Listeners 目錄
此目錄預設不存在,但如果您執行 event:generate
或 make:listener
Artisan 指令,它會自動為您建立。Listeners
目錄包含處理您的事件的類別。事件監聽器會接收一個事件實例,並在事件被觸發時執行邏輯。例如,UserRegistered
事件可能會由 SendWelcomeEmail
監聽器處理。
Mail 目錄
此目錄預設不存在,但如果您執行 make:mail
Artisan 指令,它會自動為您建立。Mail
目錄包含所有您的代表您的應用程式所傳送的電子郵件的類別。郵件物件允許您將建立電子郵件的所有邏輯封裝在一個簡單的類別中,可以使用 Mail::send
方法傳送。
Models 目錄
Models
目錄包含您所有的Eloquent 模型類別。Laravel 包含的 Eloquent ORM 為您提供了與資料庫互動的美觀、簡單的 ActiveRecord 實作。每個資料庫表格都有一個對應的「模型」,用於與該表格互動。模型允許您查詢表格中的資料,以及將新記錄插入表格。
Notifications 目錄
此目錄預設不存在,但如果您執行 make:notification
Artisan 指令,它會自動為您建立。Notifications
目錄包含您應用程式所傳送的所有「事務性」通知,例如關於應用程式內發生的事件的簡單通知。Laravel 的通知功能抽象了透過各種驅動程式(如電子郵件、Slack、簡訊或儲存在資料庫中)傳送通知的方式。
Policies 目錄
此目錄預設不存在,但如果您執行 make:policy
Artisan 指令,它會自動為您建立。Policies
目錄包含您應用程式的授權策略類別。策略用於判斷使用者是否可以對資源執行給定的動作。
Providers 目錄
Providers
目錄包含您應用程式的所有服務提供者。服務提供者透過在服務容器中繫結服務、註冊事件或執行任何其他任務來準備您的應用程式以處理傳入的請求,進而啟動您的應用程式。
在新的 Laravel 應用程式中,此目錄已包含 AppServiceProvider
。您可以根據需要自由地將您自己的提供者新增到此目錄中。
Rules 目錄
此目錄預設不存在,但如果您執行 make:rule
Artisan 指令,它會自動為您建立。Rules
目錄包含您應用程式的自訂驗證規則物件。規則用於將複雜的驗證邏輯封裝在一個簡單的物件中。如需更多資訊,請查看驗證文件。