# 架構 —— 應用目錄結構
## 1、簡介
Laravel應用默認的目錄結構試圖為不管是大型應用還是小型應用提供一個好的起點,當然,你可以自己按照喜好重新組織應用目錄結構,Laravel對類在何處被加載沒有任何限制——只要Composer可以自動載入它們即可。
## 2、根目錄
新安裝的Laravel應用包含許多文件夾:
`app`目錄包含了應用的核心代碼;
`bootstrap`目錄包含了少許文件用于框架的啟動和自動載入配置,還有一個`cache`文件夾用于包含框架生成的啟動文件以提高性能;
`config`目錄包含了應用所有的配置文件;
`database`目錄包含了數據遷移及填充文件,如果你喜歡的話還可以將其作為SQLite數據庫存放目錄;
`public`目錄包含了前端控制器和資源文件(圖片、js、css等);
`resources`目錄包含了視圖文件及原生資源文件(LESS、SASS、CoffeeScript),以及本地化文件;
`storage`目錄包含了編譯過的Blade模板、基于文件的session、文件緩存,以及其它由框架生成的文件,該文件夾被隔離成`app`、`framework`和`logs`目錄,`app`目錄用于存放應用要使用的文件,`framework`目錄用于存放框架生成的文件和緩存,最后,`logs`目錄包含應用的日志文件;
`tests`目錄包含自動化測試,其中已經提供了一個開箱即用的[PHPUnit](https://phpunit.de/)示例;
`vendor`目錄包含[Composer](https://getcomposer.org/)依賴;
## 3、App目錄
應用的核心代碼位于`app`目錄下,默認情況下,該目錄位于命名空間App下, ?并且被Composer通過[PSR-4自動載入標準](http://www.php-fig.org/psr/psr-4/)自動加載。你可以通過Artisan命令`app:name`來修改該命名空間。
`app`目錄下包含多個子目錄,如`Console`、`Http`、`Providers`等。`Console`和`Http`目錄提供了進入應用核心的API,HTTP協議和CLI是和應用進行交互的兩種機制,但實際上并不包含應用邏輯。換句話說,它們只是兩個向應用發布命令的方式。`Console`目錄包含了所有的Artisan命令,`Http`目錄包含了控制器、過濾器和請求等。
`Jobs`目錄是放置[隊列任務](http://laravelacademy.org/post/222.html)的地方,應用中的任務可以被隊列化,也可以在當前請求生命周期內同步執行。
`Events`目錄是放置[事件類](http://laravelacademy.org/post/198.html)的地方,事件可以用于通知應用其它部分給定的動作已經發生,并提供靈活的解耦的處理。
`Listeners`目錄包含事件的處理器類,處理器接收一個事件并提供對該事件發生后的響應邏輯,比如,`UserRegistered`事件可以被`SendWelcomeEmail`監聽器處理。
`Exceptions`目錄包含應用的異常處理器,同時還是處理應用拋出的任何異常的好地方。
> 注意:`app`目錄中的很多類都可以通過Artisan命令生成,要查看所有有效的命令,可以在終端中運行`php artisan list make`命令。
## 4、設置應用的命令空間
上面已經討論過,應用默認的命名空間是`App`;當然你可以修改該命名空間以匹配應用的名字,修改命名空間可以通過`app:name`命令來實現。比如,如果你的應用取名叫”SocialNet“,那么可以運行如下命令:
~~~
php artisan app:name SocialNet
~~~
當然,你也可以繼續使用`App`命名空間不做修改。
- 前言
- 序言
- 序言 ―― 發行版本說明
- 序言 ―― 升級指南
- 序言 ―― 貢獻代碼
- 開始
- 開始 ―― 安裝及配置
- 開始 ―― Laravel Homestead
- 基礎
- 基礎 ―― HTTP路由
- 基礎 ―― HTTP 中間件
- 基礎 ―― HTTP 控制器
- 基礎 ―― HTTP 請求
- 基礎 ―― HTTP 響應
- 基礎 ―― 視圖
- 基礎 ―― Blade模板
- 架構
- 架構 ―― 一次請求的生命周期
- 架構 ―― 應用目錄結構
- 架構 ―― 服務提供者
- 架構 ―― 服務容器
- 架構 ―― 契約
- 架構 ―― 門面
- 數據庫
- 數據庫 ―― 起步
- 數據庫 ―― 查詢構建器
- 數據庫 ―― 遷移
- 數據庫 ―― 填充數據
- Eloquent ORM
- Eloquent ORM ―― 起步
- Eloquent ORM ―― 關聯關系
- Eloquent ORM ―― 集合
- Eloquent ORM ―― 調整器
- Eloquent ORM ―― 序列化
- 服務
- 服務 ―― 用戶認證
- 服務 ―― Artisan 控制臺
- 服務 ―― Laravel Cashier(交易)
- 服務 ―― 緩存
- 服務 ―― 集合
- 服務 ―― Laravel Elixir
- 服務 ―― 加密
- 服務 ―― 錯誤&日志
- 服務 ―― 事件
- 服務 ―― 文件系統/云存儲
- 服務 ―― 哈希
- 服務 ―― 幫助函數
- 服務 ―― 本地化
- 服務 ―― 郵件
- 服務 ―― 包開發
- 服務 ―― 分頁
- 服務 ―― 隊列
- 服務 ―― Redis
- 服務 ―― Session
- 服務 ―― Envoy 任務運行器(SSH任務)
- 服務 ―― 任務調度
- 服務 ―― 測試
- 服務 ―― 驗證