app目錄
當中包含了應用的核心代碼 (非框架核心代碼),所以你為應用所編寫的代碼絕大多數也會放在這裡。
bootstrap目錄
當中包含了少許文件,app.php 用于框架的啟動及自動載入配置,還有1個cache folder,裡面包含了框架為提升性能所生成的文件,如路由及服務器緩存文件等。
config目錄
當中包含了應用所有的配置文件,建議看一遍這些配置文件以便熟悉laravel 所有默認的配置設定。
database目錄
當中包含了數據庫的文件,如果有使用SQLite,你可以將其作為SQLite數據庫存放目錄。
public目錄
當中包含了應用入口文件 index.php和一些前端的資源文件(圖片、javascript、css等等),該目錄也是apache 或 nginx 等web server 所指向的應用根目錄,這樣做的好處是隔離應用核心文件直接暴露於web 根目錄底下。 如果權限系統沒做好或服務器配置有漏洞的話,很可能導致敏感文件被黑客盜取,進而對網站安全造成威脅。
resources目錄
當中包含了應用視圖文件和未編譯的原生前端資源文件(less、sass、javascript),以及本地化語言文件。
routes目錄
當中包含了應用定義的所有路由。laravel 默認提供了4個路由文件用于不同入口的使用: web.php、api.php、console.php、channels.php。
web.php: 文件包含的路由通過 RouteServiceProvider 引入, 都被約束在web 中間件組中,因而支持session、csrf保護以及cookie加密功能,如果應用無需提供無狀態的api, 那麼路由基本上都要定義在web.php中。
api.php: 文件包含的路由通過 RouteServiceProvider 引入,都被約束在api 中間件組中,因而支持頻率限制功能,這些路由是無狀態的,所以請求通過這些路由進入應用需要token 進行驗證並且不能訪問session 狀態。
console.php: 文件用於定義所有基於閉包的控制台命令,每個閉包都被綁定到一個控制台命令並且允許命令行IO 方法進行交互,盡管這些文件並不定義http 路由,但是它定義了基於控制台的應用入口(路由)。
channels.php: 文件用於註冊應用支持的所有事件廣播頻道。
storage目錄
當中包含了編譯後的blade模板、基於文件的session、文件緩存,以及其他由框架生成的文件,該目錄被細分成app、framework和logs 子目錄。
app: 用於存放應用生成的文件
framework: 用於存放框架生成的文件及緩存
logs: 用於存放應用的日誌文件
storage/app/public 目錄用於存放用戶生成的文件,例如可以被公開訪問的用戶頭像,要達到被web 用戶訪問的目的,你還需要在public (應用根目錄的public 目錄) 下生成一個軟連接storage 指向這個目錄。 你可以通過php arisan storage:link 命令生成這個軟連接。
tests目錄
當中包含自動化測試文件, 其中默認已經提供了一個開箱即用的phpunit 示例;每一個測試類都要以Test 開頭,你可以通過phpunit 或php vender/bin/phpunit 命令來運行測試。
vendor目錄
當中包含了應用所有通過composer 加載的依賴
app目錄內的介紹
broadcasting目錄
當中包含了應用所需的所有廣播頻道類,這些類通過 make:channel 命令生成。該目錄默認不存在,但是當你通過命令第一次執行創建頻道類別時會自動生成。
console目錄
當中包含了所有自定義的 Artisan命令,這些命令類可以使用 make:command 命令生成。該目錄下還有Console/Kernel 類,在這裡可以註冊自定義的 Artisan命令以及定義調度任務。
events目錄
這個目錄默認不存在,但是可以通過 event:generate 和 make:event 命令創建。該目錄用於存放事件類。 事件類用於告知應用其他部份某個事件發生情況並提供靈活的處理機制。
exceptions目錄
當中包含了應用的異常處理器,同時還是處理應用拋出的任何異常的好地方。如果你想要自定義異常如何記錄或渲染,需要編輯該目錄下的 handler類。
http目錄
當中包含了控制器、中間件、以及表單請求等,幾乎所有通過web進入應用的請求處理都在這裡進行。
jobs目錄
該目錄默認不存在,可以通過執行 make:job 命令生成, jobs目錄用於存放隊列任務,祇用中的任務可以被推送到隊列,也可以在當前請求生命周期內同步執行。同步執行的任務有時也被看作命令,因為它們實現了命令模式。
listeners目錄
該目錄默認不存在,可以通過執行 event:generate 及 make:listener 命令創建。 listeners 目錄包含了處理事件的類(事件監聽器),事件監聽器接收一個事件並提供對該事件發生後的響應邏輯,例如, UserRegistered 事件可以被 SendWelcomeEmail 監聽器處理。
mail目錄
該目錄默認不存在,但是可以通過 make:mail 命令生成。 mail目錄包含應用所有郵件相關類,郵件對象允許你在一個地方封裝構建郵件所需的所有業務邏輯,然後使用 Mail::send 方法發送郵件。
notifications目錄
該目錄默認不存在,你可以通過執行 make:notification 命令生成, notification 目錄包含應用發送的所有通知,例如事件發生通知。 laravel的通知功能將通知發送,你可以通過郵件,也可以通過slack、短信或者數據庫發送通知。
policies目錄
該目錄默認不存在,你可以通過執行 make:policy 命令生成, policies目錄包含了應用所有的授權策略類,策略用於判斷某些用戶是否有權限去訪問指定資源。
providers目錄
當中包含了應用的所有服務提供者,服務提供者在應用啟動過程中綁定服務到容器、註冊事件以及執行其他任務為即將到來的請求處理做好準備工作。
rules目錄
該目錄默認不存在,你可以通過執行 make:rule 命令生成, rules目錄包含應用的自定義驗證規則對象,迢些規則用於在單個對象中封裝複雜的驗證邏輯。