目錄結構
📝 此頁面為 Laravel 官方文檔的繁體中文翻譯。查看原始英文版本
目錄結構
簡介
預設的 Laravel 應用程式結構旨在為大型和小型應用程式提供一個良好的起點。但您可以自由地按照任何您希望的方式組織您的應用程式。Laravel 幾乎不限制任何給定類別的位置——只要 Composer 可以自動載入該類別。
根目錄
App 目錄
app 目錄包含應用程式的核心代碼。我們很快就會更詳細地探討這個目錄;但是,應用程式中幾乎所有類別都將位於此目錄中。
Bootstrap 目錄
bootstrap 目錄包含引導框架的 app.php 檔案。此目錄還包含一個 cache 目錄,其中包含框架為效能優化生成的檔案,如路由和服務快取檔案。
Config 目錄
顧名思義,config 目錄包含您應用程式的所有配置檔案。閱讀所有這些檔案並熟悉可用的所有選項是一個很好的主意。
Database 目錄
database 目錄包含您的資料庫遷移、模型工廠和 seeds。如果您願意,也可以使用此目錄來儲存 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 命名空間下,並由 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 目錄包含您的控制器、中介層和請求。
[!NOTE]
app目錄中的許多類別都可以透過 Artisan 命令生成。要查看可用命令,請在終端中運行php artisan list make命令。
Broadcasting 目錄
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、SMS 或儲存在資料庫中)發送通知。
Policies 目錄
此目錄預設不存在,但如果您執行 make:policy Artisan 命令,將為您建立。Policies 目錄包含您應用程式的授權策略類別。策略用於判斷使用者是否可以對資源執行給定操作。
Providers 目錄
Providers 目錄包含您應用程式的所有服務提供者。服務提供者透過在服務容器中綁定服務、註冊事件或執行任何其他任務來為傳入請求準備應用程式,從而引導您的應用程式。
在全新的 Laravel 應用程式中,此目錄已包含 AppServiceProvider。您可以根據需要自由將自己的提供者添加到此目錄中。
Rules 目錄
此目錄預設不存在,但如果您執行 make:rule Artisan 命令,將為您建立。Rules 目錄包含您應用程式的自訂驗證規則物件。規則用於將複雜的驗證邏輯封裝在一個簡單的物件中。更多資訊,請查看驗證文檔。