Laravel 應(yīng)用默認(rèn)的目錄結(jié)構(gòu)試圖為不管是大型應(yīng)用還是小型應(yīng)用提供一個(gè)好的起點(diǎn),當(dāng)然,你可以自己按照喜好重新組織應(yīng)用目錄結(jié)構(gòu),Laravel 對(duì)類在何處被加載沒(méi)有任何限制——只要 Composer 可以自動(dòng)載入它們即可。
新安裝的 Laravel 應(yīng)用包含許多文件夾:
app
目錄包含了應(yīng)用的核心代碼;bootstrap
目錄包含了少許文件用于框架的啟動(dòng)和自動(dòng)載入配置,還有一個(gè) cache
文件夾用于包含框架生成的啟動(dòng)文件以提高性能;config
目錄包含了應(yīng)用所有的配置文件;database
目錄包含了數(shù)據(jù)遷移及填充文件,如果你喜歡的話還可以將其作為 SQLite 數(shù)據(jù)庫(kù)存放目錄;public
目錄包含了前端控制器和資源文件(圖片、js、css 等);resources
目錄包含了視圖文件及原生資源文件(LESS、SASS、CoffeeScript),以及本地化文件;storage
目錄包含了編譯過(guò)的 Blade 模板、基于文件的 session、文件緩存,以及其它由框架生成的文件,該文件夾被隔離成app
、framework
和 logs
目錄,app
目錄用于存放應(yīng)用要使用的文件,framework
目錄用于存放框架生成的文件和緩存,最后,logs
目錄包含應(yīng)用的日志文件;tests
目錄包含自動(dòng)化測(cè)試,其中已經(jīng)提供了一個(gè)開(kāi)箱即用的 PHPUnit 示例;vendor
目錄包含 Composer 依賴;應(yīng)用的核心代碼位于app
目錄下,默認(rèn)情況下,該目錄位于命名空間 App 下, 并且被 Composer 通過(guò) PSR-4 自動(dòng)載入標(biāo)準(zhǔn)自動(dòng)加載。你可以通過(guò) Artisan 命令 app:name
來(lái)修改該命名空間。
app
目錄下包含多個(gè)子目錄,如 Console
、Http
、Providers
等。
Console
和 Http
目錄提供了進(jìn)入應(yīng)用核心的 API,HTTP 協(xié)議和 CLI 是和應(yīng)用進(jìn)行交互的兩種機(jī)制,但實(shí)際上并不包含應(yīng)用邏輯。換句話說(shuō),它們只是兩個(gè)向應(yīng)用發(fā)布命令的方式。Console
目錄包含了所有的 Artisan 命令,Http
目錄包含了控制器、過(guò)濾器和請(qǐng)求等。
Jobs
目錄是放置隊(duì)列任務(wù)的地方,應(yīng)用中的任務(wù)可以被隊(duì)列化,也可以在當(dāng)前請(qǐng)求生命周期內(nèi)同步執(zhí)行。
Events
目錄是放置事件類的地方,事件可以用于通知應(yīng)用其它部分給定的動(dòng)作已經(jīng)發(fā)生,并提供靈活的解耦的處理。
Listeners
目錄包含事件的處理器類,處理器接收一個(gè)事件并提供對(duì)該事件發(fā)生后的響應(yīng)邏輯,比如,UserRegistered
事件可以被SendWelcomeEmail
監(jiān)聽(tīng)器處理。
Exceptions
目錄包含應(yīng)用的異常處理器,同時(shí)還是處理應(yīng)用拋出的任何異常的好地方。
注意:app
目錄中的很多類都可以通過(guò) Artisan 命令生成,要查看所有有效的命令,可以在終端中運(yùn)行 php artisan list make
命令。
上面已經(jīng)討論過(guò),應(yīng)用默認(rèn)的命名空間是 App
;當(dāng)然你可以修改該命名空間以匹配應(yīng)用的名字,修改命名空間可以通過(guò) app:name
命令來(lái)實(shí)現(xiàn)。比如,如果你的應(yīng)用取名叫”SocialNet“,那么可以運(yùn)行如下命令:
php artisan app:name SocialNet
當(dāng)然,你也可以繼續(xù)使用App
命名空間不做修改。