目錄結構
簡介
預設 Laravel 應用程式結構旨在為大型和小型應用程式提供一個良好的起點。但是您可以自由地組織您的應用程式,無論您喜歡哪種方式。Laravel 對於任何給定的類別位於何處幾乎沒有限制 - 只要 Composer 可以自動載入該類別即可。
根目錄
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
中介層群組中的路由,該群組提供會話狀態、CSRF 保護和 cookie 加密。如果您的應用程式不提供無狀態、RESTful API,那麼您的所有路由很可能都會在 web.php
檔案中定義。
console.php
檔案是您可以定義所有基於閉包的命令列指令的地方。每個閉包都綁定到一個命令實例,允許一種與每個命令的 IO 方法互動的簡單方法。即使此檔案未定義 HTTP 路由,它也定義了基於命令列的入口點(路由)到您的應用程式中。您也可以在 console.php
檔案中排程任務。
或者,您可以通過 install:api
和 install:broadcasting
Artisan 指令,為 API 路由 (api.php
) 和廣播頻道 (channels.php
) 安裝額外的路由檔案。
api.php
檔案包含旨在無狀態的路由,因此通過這些路由進入應用程式的請求旨在通過令牌進行身份驗證,並且將無法存取會話狀態。
channels.php
檔案是您可以註冊您的應用程式支援的所有事件廣播頻道的地方。
Storage 目錄
storage
目錄包含您的日誌、編譯後的 Blade 模板、基於檔案的會話、檔案快取和框架產生的其他檔案。此目錄分為 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 目錄內產生。例如,app/Console
目錄在您執行 make:command
Artisan 指令來產生命令類別之前不會存在。
Console
和 Http
目錄都在下面的各自章節中進一步說明,但請將 Console
和 Http
目錄視為提供進入您的應用程式核心的 API。HTTP 協議和 CLI 都是與您的應用程式互動的機制,但實際上並不包含應用程式邏輯。換句話說,它們是向您的應用程式發出指令的兩種方式。Console
目錄包含您的所有 Artisan 指令,而 Http
目錄包含您的控制器、中介層和請求。
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
目錄包含您的應用程式的自訂驗證規則物件。規則用於將複雜的驗證邏輯封裝在一個簡單的物件中。有關更多資訊,請查看驗證文件。