資料夾結構


#############

Laravel 的資料夾結構

App 目錄

broadcasting
目錄

console

目錄

############################################################### ####### ###events### 目錄############ ###exceptions### 目錄########### ### http### 目錄############ ###jobs### 目錄############# ###listeners### 目錄##### ####### ###mail### 目錄############ ###notifications### 目錄########### ### policies### 目錄############ ###providers### 目錄##############rules### 目錄###### ################################簡介######預設的Laravel 應用程式結構旨在為不同大小的應用提供一個很好的起點。當然,您可以隨意組織您的應用程式。 Laravel 對任何給定類別的位置幾乎沒有任何限制,只要它們能被 Composer 自動載入。 ############為什麼沒有模型目錄? ######當開始使用 Laravel 時,許多開發人員都因為缺少  ###models### 目錄而感到困惑。然而,缺少這樣的目錄是故意的。我們發現「模型」含糊不清,因為不同的人對「模型」有不同的理解。有些開發者將應用的「模型」稱為其所有業務邏輯的總體,而有些人則將「模型」稱為與關聯式資料庫互動的類別。 ######基於這個原因,我們預設將 Eloquent 的模型放在  ###app###   目錄下,並允許開發人員將它們放在其他地方。 #####################

根目錄

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.phpapi .phpconsole.phpchannels.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 會話生成的檔案、快取檔案以及框架產生的其他檔案。這個目錄被細分成 appframeworklogs 三個子目錄。 app 目錄可以用來儲存應用程式生成的任何檔案。 framework 目錄用來儲存框架產生的檔案和快取。最後, logs 目錄包含已套用的日誌檔案。

storage/app/public 可以用來儲存使用者產生的文件,例如需要公開存取的使用者頭像。你應該建立一個 public/storage  的軟連結指向這個目錄。你可以直接透過 php artisan storage:link 指令來建立此連結。

Tests 目錄

tests 目錄包含自動化測試檔案。在 PHPUnit 有現成的範例供你參考。每個測試類別都應該以 Test 作為後綴。你可以使用 phpunitphp vendor/bin/phpunit 指令來執行測試。

Vendor 目錄

vendor 目錄包含你所有的 Composer 依賴套件。

App 目錄

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

app 目錄包含額外的各種目錄,例如:ConsoleHttpProviders。將 ConsoleHttp 目錄視為向應用程式的核心提供 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 :generatemake:event Artisan 指令去建立。 Events 目錄安置 事件類別。事件可用於警告應用程式的其它部分發生了一個給定的操作,提供了極大的靈活性和解耦。

Exceptions 目錄

Exceptions 目錄包含應用程式的例外處理,也是一個放置應用程式拋出任何異常的好地方。如果你想要自訂異常的記錄和渲染方式,你應該修改此目錄中的 Handler 類別。

Http 目錄

Http 目錄包含你的控制器,中間件和表單請求。處理進入應用程式請求的所有邏輯幾乎都放置在此目錄中。

Jobs 目錄

預設情況下這個目錄是不存在的,但如果你執行make :job Artisan 指令時,它將被建立出來。 Jobs 目錄安置應用程式的 可排隊作業。 Jobs 可由應用程式排對作業,也可以在目前要求的生命週期內同步運作。在當前請求期間同步運行的 Jobs 有時會稱為‘命令’,因為它們是 命令模式 的實作。

Listeners 目錄

這個目錄是不存在的,但如果你執行了 event:generatemake: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 目錄包含應用程式的自訂驗證規則物件。規則用於將複雜的驗證邏輯封裝在一個簡單物件中。關於更多信息,請查看 驗證文檔。

本篇首刊在 LearnKu.com 網站上。