默認的 Laravel 應用程序結構是爲了給不管構建大型仍是小型應用程序都提供一個良好的開始。固然,你能夠依照喜愛自由地組織應用程序。Laravel 幾乎沒有限制任何類(class)文件的放置位置 - 只要 Composer 能夠自動加載這些類便可。php
一個全新建立的 Laravel 項目的根目錄中包含如下子目錄:前端
app
目錄,如你所料,包含應用程序的核心代碼。咱們以後將會很快深刻地探討這個目錄的細節。laravel
bootstrap
目錄包含的幾個文件用於啓動框架和配置自動加載功能,還有一個 cache
目錄,用於存放框架自動生成的文件,可以加速框架啓動。數據庫
config
目錄,顧名思義,包含全部應用程序的配置文件。bootstrap
database
目錄包含了數據庫遷移與數據填充文件。若是你不介意的話,也能夠將 SQLite 數據庫文件存放在這個目錄中。緩存
public
目錄包含了 front controller and your assets (images, JavaScript, CSS, etc.). public
目錄包含前端控制器和你的資源文件 (圖片、JavaScript、CSS,等等)。session
resources
目錄包含你的視圖、原始的資源文件 (LESS、SASS、CoffeeScript) 和本地化語言文件。app
storage
目錄包含編譯後的 Blade 模板、基於文件的 session、文件緩存和其餘由框架生成的文件。此目錄下面包含三個子目錄:app
、framework
和 logs
。app
目錄用戶存放應用程序所用到的任何任何文件;framework
目錄用於存放由框架生成的文件和緩存文件;最後,logs
目錄用於存放應用程序的日誌文件。composer
tests
目錄用於存放你的自動化測試文件。Laravel 默認自帶了一個 PHPUnit 的實例。框架
vendor
目錄用於存放 Composer 的依賴包。
應用程序的「肉」就在app目錄裏面, 默認,這個目錄命名空間就是App, 被Composer按照PSR-4自動加載標準來自動加載,你能夠用app:name 這樣的Artisan 命令來改變命名空間。
app目錄跟着多個子目錄,好比Console, Http, 和Providers等,想象Console 和 Http目錄提供了要給API直達應用的核心, HTTP協議和CLI都是和應用交互的機制,可是沒有真正包含應用邏輯, 也就是說, 他們是下達命令給你的應用的兩種途徑。 console 目錄包含全部的Artisan命令, Http目錄包含你的控制器,過濾器,和請求。
Jobs目錄,固然,裝着能夠排隊的任務, 任務能夠被你的應用排隊, 也能夠被當前的請求生命週期來同步運行。
Events目錄,就像你指望的,包含事件類, 事件能夠被用來警告應用的其餘部分,一個動做正在發生,提供了必定的靈活性和解耦。
監聽者目錄包含着事件的Handler類,handlers接收一個事件,而後運行相應的處理邏輯, 舉例來講,一個 UserRegistered事件,而後被SendWelcomeEmail監聽者處理。
Exceptions目錄包含應用的 異常處理handler, 也不失爲處理應用拋出任何異常的地方。
注意:在app目錄中的許多類能夠用Artisan命令來產生。 要查看可使用的命令, 在終端機執行php artisan list make命令
如前面所提到的,默認的應用程序命名空間爲 App
;然而,你還能夠以應用程序的名稱來做爲命名空間,這能夠簡單地經過 app:name
Artisan 命令來完成。例如:若是你的應用程序叫作 "SocialNet",你須要執行下面的命令:
php artisan app:name SocialNet
固然,你仍然能夠繼續快樂地使用 App
命名空間,