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