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
命名空間不做修改。
更多建議: