展開文件目錄

目錄結構

簡介

Laravel 的預設應用程式結構旨在為大型和小型應用程式提供一個很好的起點。但您可以自由地按照自己的喜好組織應用程式。只要 Composer 能夠自動載入類別,Laravel 幾乎不會對類別的位置施加任何限制。

根目錄

app 目錄

app 目錄包含您的應用程式的核心程式碼。我們很快將更詳細地探索這個目錄;然而,您的應用程式中幾乎所有的類別都會在這個目錄中。

Bootstrap 目錄

bootstrap 目錄包含 app.php 檔案,該檔案用於啟動框架。此目錄還包含一個 cache 目錄,其中包含框架生成的檔案,用於性能優化,例如路由和服務快取檔案。

組態目錄

config 目錄,如其名稱所示,包含所有應用程式的組態檔案。建議閱讀所有這些檔案,熟悉所有可用的選項。

資料庫目錄

database 目錄包含資料庫遷移、模型工廠和填充。如果需要,您也可以使用此目錄來保存 SQLite 資料庫。

公開目錄

public 目錄包含 index.php 檔案,該檔案是進入應用程式的所有請求的入口點,並配置自動載入。此目錄還包含您的資源檔,如圖片、JavaScript 和 CSS。

資源目錄

resources 目錄包含您的視圖,以及原始、未編譯的資源檔,如 CSS 或 JavaScript。

路由目錄

routes 目錄包含應用程式的所有路由定義。預設情況下,Laravel 包含兩個路由檔案:web.phpconsole.php

web.php 檔案包含 Laravel 放置在 web 中介層群組中的路由,該中介層提供會話狀態、CSRF 保護和 Cookie 加密。如果您的應用程式不提供無狀態的 RESTful API,則所有路由很可能會在 web.php 檔案中定義。

console.php 檔案是您可以在其中定義所有基於閉包的控制台命令。每個閉包都綁定到一個命令實例,使與每個命令的 IO 方法互動變得簡單。即使此檔案不定義 HTTP 路由,它定義了基於控制台的應用程式入口點 (路由)。您也可以在 console.php 檔案中安排任務。

選擇性地,您可以通過 install:apiinstall:broadcasting Artisan 命令為 API 路由(api.php)和廣播頻道(channels.php)安裝額外的路由文件。

api.php 文件包含預期為無狀態的路由,因此通過這些路由進入應用程序的請求預期將通過 令牌進行身份驗證,並且將無法訪問會話狀態。

channels.php 文件是您可以在其中註冊應用程序支持的所有 事件廣播 頻道的地方。

儲存目錄

storage 目錄包含您的日誌、編譯的 Blade 模板、基於文件的會話、文件快取以及框架生成的其他文件。此目錄分為 appframeworklogs 目錄。app 目錄可用於存儲應用程序生成的任何文件。framework 目錄用於存儲框架生成的文件和快取。最後,logs 目錄包含應用程序的日誌文件。

storage/app/public 目錄可用於存儲用戶生成的文件,例如個人資料頭像,這些文件應該是公開訪問的。您應該在 public/storage 創建一個符號連結,指向此目錄。您可以使用 php artisan storage:link Artisan 命令來創建連結。

測試目錄

tests 目錄包含您的自動化測試。示例 PestPHPUnit 單元測試和功能測試已經預設提供。每個測試類應該以 Test 一詞作為後綴。您可以使用 /vendor/bin/pest/vendor/bin/phpunit 命令運行您的測試。或者,如果您想要更詳細和美觀的測試結果呈現,您可以使用 php artisan test Artisan 命令運行您的測試。

供應商目錄

vendor 目錄包含您的 Composer 依賴項。

應用程式目錄

大部分的應用程式位於 app 目錄中。預設情況下,此目錄在 App 命名空間下,並且由 Composer 使用 PSR-4 自動載入標準 進行自動載入。

預設情況下,app 目錄包含 HttpModelsProviders 目錄。然而,隨著您使用 make Artisan 命令生成類別,app 目錄內將生成各種其他目錄。例如,直到您執行 make:command Artisan 命令生成命令類別之前,app/Console 目錄將不存在。

ConsoleHttp 目錄將在下面各自的部分進一步解釋,但請將 ConsoleHttp 目錄視為提供應用程式核心的 API。HTTP 協議和 CLI 都是與應用程式互動的機制,但實際上不包含應用程式邏輯。換句話說,它們是向應用程式發出命令的兩種方式。Console 目錄包含所有 Artisan 命令,而 Http 目錄包含您的控制器、中介層和請求。

[!NOTE]
app 目錄中的許多類別可以通過 Artisan 命令生成。要查看可用的命令,請在終端機中運行 php artisan list make 命令。

廣播目錄

Broadcasting 目錄包含應用程式的所有廣播頻道類別。這些類別是使用 make:channel 命令生成的。此目錄不會預設存在,但在您創建第一個頻道時將為您創建。要了解更多關於頻道的資訊,請查看 事件廣播 的文件。

控制台目錄

Console 目錄包含應用程式的所有自定義 Artisan 命令。這些命令可以使用 make:command 命令生成。

事件目錄

這個目錄不會在預設情況下存在,但將會由 event:generatemake:event Artisan 命令為您創建。Events 目錄包含 事件類別。事件可用於通知應用程式的其他部分發生了某個動作,提供了很大的靈活性和解耦性。

例外目錄

Exceptions 目錄包含應用程式的所有自訂例外。這些例外可以使用 make:exception 命令生成。

HTTP 目錄

Http 目錄包含您的控制器、中介層和表單請求。幾乎所有處理進入應用程式的請求的邏輯都將放在這個目錄中。

工作目錄

這個目錄不會在預設情況下存在,但如果您執行 make:job Artisan 命令,將為您創建。Jobs 目錄包含應用程式的 可排隊工作。工作可以由應用程式排隊或在當前請求生命週期內同步運行。在當前請求期間同步運行的工作有時被稱為 "命令",因為它們是 命令模式 的實現。

監聽器目錄

這個目錄不會在預設情況下存在,但如果您執行 event:generatemake:listener Artisan 命令,將為您創建。Listeners 目錄包含處理您的 事件 的類別。事件監聽器接收一個事件實例並根據事件被觸發時的邏輯執行操作。例如,UserRegistered 事件可能由 SendWelcomeEmail 監聽器處理。

郵件目錄

這個目錄不會在預設情況下存在,但如果您執行 make:mail Artisan 命令,將為您創建。Mail 目錄包含您的應用程式發送的所有 代表郵件的類別。郵件物件允許您將構建郵件的所有邏輯封裝在一個簡單的類別中,並可以使用 Mail::send 方法發送。

模型目錄

Models 目錄包含所有您的 Eloquent 模型類別。Laravel 隨附的 Eloquent ORM 提供了一個美觀、簡單的 ActiveRecord 實作,用於與您的資料庫進行操作。每個資料庫表格都有對應的 "模型",用於與該表格進行互動。模型允許您查詢表格中的資料,並將新記錄插入表格中。

通知目錄

此目錄默認情況下不存在,但如果您執行 make:notification Artisan 指令,將為您創建。Notifications 目錄包含所有由應用程式發送的 "交易性" 通知,例如有關應用程式內發生事件的簡單通知。Laravel 的通知功能對於通過各種驅動程式發送通知(如電子郵件、Slack、簡訊或存儲在資料庫中)進行了抽象化。

授權目錄

此目錄默認情況下不存在,但如果您執行 make:policy Artisan 指令,將為您創建。Policies 目錄包含應用程式的 授權原則類別。原則用於確定使用者是否可以針對資源執行特定操作。

提供者目錄

Providers 目錄包含應用程式的所有 服務提供者。服務提供者通過在服務容器中綁定服務、註冊事件或執行其他任務來啟動您的應用程式,為接收的請求準備應用程式。

在一個新的 Laravel 應用程式中,此目錄已經包含 AppServiceProvider。您可以根據需要自由向此目錄添加自己的提供者。

規則目錄

這個目錄不會自動存在,但如果您執行 make:rule Artisan 指令,系統會為您建立它。Rules 目錄包含應用程式的自訂驗證規則物件。規則用於將複雜的驗證邏輯封裝在一個簡單的物件中。欲了解更多資訊,請查看 驗證文件