資料夾結構
Laravel 的資料夾結構
- 簡介
- #根目錄
## resources 目錄
##storage
目錄-
#tests 目錄
console
根目錄
App 目錄
app
目錄包含應用程式的核心代碼。你應用中幾乎所有的類別都應該放在這裡。稍後我們會更深入地了解這個目錄的細節。
Bootstrap 目錄
bootstrap
目錄包含引導框架的app.php
檔案。該目錄還包含了一個 cache
目錄, cache
目錄下存放著框架產生的用來提升效能的文件,例如路由和服務快取檔案。
Config 目錄
config
目錄,顧名思義,包含應用程式所有的設定文件。我們鼓勵你通讀這些文件,以便幫助你熟悉所有可用的選項。
Database 目錄
#database
目錄包含資料填充和遷移檔案以及模型工廠類。你也可以把它當作 SQLite 資料庫存放目錄。
Public 目錄
#public
目錄包含了入口檔案index.php
,它是進入應用程式的所有請求的入口點。此目錄也包含了一些你的資源檔案(如圖片、JavaScript 和 CSS)。
Resources 目錄
resources
目錄包含了檢視和未編譯的資源檔案(如LESS、SASS 或JavaScript)。此目錄還包含你所有的語言檔案。
Routes 目錄
routes
目錄包含了所有應用程式的路由定義,Laravel 預設包含了幾個路由檔案:web.php
、api .php
、 console.php
和channels.php
。
web.php
檔案包含RouteServiceProvider
放置在web
中間件群組中的路由,它提供會話狀態、CSRF 防護和cookie 加密。如果你的應用程式不提供無狀態的、RESTful 風格的 API,則所有的路由都應該在 web.php
檔案中定義。 .
api.php
檔案包含 RouteServiceProvider
放置在 api
中間件群組中的路由,它提供了頻率限制。這些路由都是無狀態的,所以透過這些路由進入應用程式請求旨在透過令牌進行身份認證,並且不能存取會話狀態。
console.php
檔案是定義所有基於控制台命令閉包函數的地方。每個閉包函數都被綁定到一個命令實例並且允許和命令列 IO 方法進行簡單的交互。儘管這些檔案沒有定義 HTTP 路由,但它也將基於控制台的入口點(路由)定義到應用程式中。
channels.php
用來註冊你的應用程式支援的所有的事件廣播頻道的地方。
Storage 目錄
storage
目錄包含編譯後的Blade 範本、session 會話生成的檔案、快取檔案以及框架產生的其他檔案。這個目錄被細分成 app
、 framework
和 logs
三個子目錄。 app
目錄可以用來儲存應用程式生成的任何檔案。 framework
目錄用來儲存框架產生的檔案和快取。最後, logs
目錄包含已套用的日誌檔案。
storage/app/public
可以用來儲存使用者產生的文件,例如需要公開存取的使用者頭像。你應該建立一個 public/storage
的軟連結指向這個目錄。你可以直接透過 php artisan storage:link
指令來建立此連結。
Tests 目錄
tests
目錄包含自動化測試檔案。在 PHPUnit 有現成的範例供你參考。每個測試類別都應該以 Test
作為後綴。你可以使用 phpunit
或 php vendor/bin/phpunit
指令來執行測試。
Vendor 目錄
vendor
目錄包含你所有的 Composer 依賴套件。
App 目錄
你的大部分的應用程式都位於 app
目錄中。預設情況下,此目錄的命名空間為 App
,並透過 Composer 使用 PSR-4 自動載入標準 自動載入。
app
目錄包含額外的各種目錄,例如:Console
,Http
和 Providers
。將 Console
和 Http
目錄視為向應用程式的核心提供 API。 HTTP 協定和 CLI 都是與應用程式互動的機制,但實際上並不包含應用程式邏輯。換句話說,它們是向你的應用程式發出命令的兩種方式。 Console
目錄包含所有的 Artisan 指令,而 Http
目錄包含你的控制器,中間件和請求。
當你使用 make
Artisan 指令產生類別時,將在 app
目錄下產生各種其它目錄。因此,例如,app/Jobs
目錄直到你執行make:job
Artisan 指令去產生一個作業類別之前將不存在
{tip} 許多類別透過Artisan 指令產生在
app
目錄中。為了查看可用的指令,在你的終端機執行php artisan list make
指令。
Broadcasting 目錄
Broadcasting
目錄包含應用程式的所有廣播通道類。這些類別使用 make:channel
命令產生。此目錄預設時不存在的,但是當你建立第一個頻道時它將被建立。要了解更多的關於頻道的信息,請查看有關文檔 事件廣播。
Console 目錄
Console
目錄包含應用程式的所有自訂 Artisan 指令。這些命令可以使用 make:command
命令產生。此目錄也安置了控制台內核,在其中你可以註冊自訂的 Artisan 指令,並定義 排程任務。
Events 目錄
預設情況下這個目錄是不存在的,但你可以透過event :generate
和make:event
Artisan 指令去建立。 Events
目錄安置 事件類別。事件可用於警告應用程式的其它部分發生了一個給定的操作,提供了極大的靈活性和解耦。
Exceptions 目錄
Exceptions
目錄包含應用程式的例外處理,也是一個放置應用程式拋出任何異常的好地方。如果你想要自訂異常的記錄和渲染方式,你應該修改此目錄中的 Handler
類別。
Http 目錄
Http
目錄包含你的控制器,中間件和表單請求。處理進入應用程式請求的所有邏輯幾乎都放置在此目錄中。
Jobs 目錄
預設情況下這個目錄是不存在的,但如果你執行make :job
Artisan 指令時,它將被建立出來。 Jobs
目錄安置應用程式的 可排隊作業。 Jobs 可由應用程式排對作業,也可以在目前要求的生命週期內同步運作。在當前請求期間同步運行的 Jobs 有時會稱為‘命令’,因為它們是 命令模式 的實作。
Listeners 目錄
這個目錄是不存在的,但如果你執行了 event:generate
或make:listener
Artisan 指令時,它將會被建立出來。 Listeners
目錄包含 事件 的處理類別。事件偵聽器接收一個事件實例並執行邏輯以回應被觸發的事件。例如,一個 UserRegistered
事件可能會被 SendWelcomeEmail
偵聽器處理。
Mail 目錄
預設情況下這個目錄是不存在的,但如果你執行make :mail
Artisan 指令,它將被創建出來。 Mail
目錄包含應用程式傳送郵件的所有類別。郵件物件允許你去建立一個封裝所有邏輯的郵件類,這個簡單類別中可以使用 Mail::send
方法發送郵件。
Notifications 目錄
預設情況下這個目錄是不存在的,但如果你執行make :notification
Artisan 指令,它將被建立出來。 Notifications
目錄包含應用程式的發送的所有『交易』通知,例如關於應用程式中發生的事件的簡單通知。 Laravel 的通知功能抽象化了透過各種驅動(如:電子郵件,Slack,SMS 或儲存在資料庫中)去發送通知。
Policies 目錄
預設情況下這個目錄是不存在的,但如果你執行make :policy
Artisan 指令,它將被創建出來。 Policies
目錄包含應用程式的授權策略類別。策略用於確定一個使用者是否對一個資源能否執行一個給定的操作。有關更多信息,請查看 授權文件。
Providers 目錄
Providers
目錄包含應用程式的所有 服務提供者。服務提供者透過在服務容器中綁定服務引導應用程序,註冊事件或準備為應用程式即將到來的請求執行其它任何任務。
在一個新的 Laravel 應用程式中,此目錄已經包含一些提供者。你可以根據需要隨意將你自己的提供者添加到此目錄中。
Rules 目錄
預設情況下這個目錄是不存在的,但如果你執行make :rule
Artisan 指令,它將被創建出來。 Rules
目錄包含應用程式的自訂驗證規則物件。規則用於將複雜的驗證邏輯封裝在一個簡單物件中。關於更多信息,請查看 驗證文檔。