跳至內容

目錄結構

簡介

預設的 Laravel 應用程式結構旨在為大小型應用程式提供一個良好的起點。但是您可以自由地組織您的應用程式。Laravel 對任何給定類別的放置位置幾乎沒有限制 - 只要 Composer 可以自動載入該類別即可。

lightbulb

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.phpconsole.php

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

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

或者,您可以透過 install:apiinstall:broadcasting Artisan 命令,為 API 路由 (api.php) 和廣播通道 (channels.php) 安裝額外的路由檔案。

api.php 檔案包含旨在無狀態的路由,因此透過這些路由進入應用程式的請求旨在透過權杖進行驗證,並且無法存取 Session 狀態。

channels.php 檔案是您註冊應用程式支援的所有事件廣播通道的地方。

Storage 目錄

storage 目錄包含您的日誌、編譯的 Blade 樣板、基於檔案的 Session、檔案快取和框架產生的其他檔案。此目錄分為 appframeworklogs 目錄。app 目錄可用於儲存您應用程式產生的任何檔案。framework 目錄用於儲存框架產生的檔案和快取。最後,logs 目錄包含您應用程式的日誌檔案。

storage/app/public 目錄可用於儲存使用者產生的檔案,例如應公開存取的個人資料頭像。您應該在 public/storage 建立一個指向此目錄的符號連結。您可以使用 php artisan storage:link Artisan 命令建立連結。

Tests 目錄

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

Vendor 目錄

vendor 目錄包含您的 Composer 相依性。

App 目錄

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

預設情況下,app 目錄包含 HttpModelsProviders 目錄。但是,隨著時間的推移,當您使用 make Artisan 命令來產生類別時,將會在 app 目錄內產生各種其他目錄。例如,在您執行 make:command Artisan 命令來產生命令類別之前,app/Console 目錄不會存在。

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

lightbulb

app 目錄中的許多類別都可以透過 Artisan 指令產生。要檢視可用的指令,請在終端機中執行 php artisan list make 指令。

廣播目錄

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

Console 目錄

Console 目錄包含您應用程式的所有自訂 Artisan 命令。這些指令可以使用 make:command 指令產生。

Events 目錄

此目錄預設不存在,但會由 event:generatemake:event Artisan 指令自動為您建立。Events 目錄存放事件類別。事件可用於提醒您應用程式的其他部分,指出已發生給定的動作,從而提供極大的彈性和解耦。

Exceptions 目錄

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

Http 目錄

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

Jobs 目錄

此目錄預設不存在,但如果您執行 make:job Artisan 指令,它會自動為您建立。Jobs 目錄存放您應用程式的可佇列任務。任務可以由您的應用程式排入佇列,也可以在目前請求生命週期中同步執行。在目前請求期間同步執行的任務有時被稱為「命令」,因為它們是命令模式的實作。

Listeners 目錄

此目錄預設不存在,但如果您執行 event:generatemake: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 目錄包含您應用程式的自訂驗證規則物件。規則用於將複雜的驗證邏輯封裝在一個簡單的物件中。如需更多資訊,請查看驗證文件