## Laravel 的文件夾結構
上一節我們簡單的了解了一下 `MVC` 工作流程,有很多目錄里的文件還不清楚有什么作用。在 `Laravel` 沒有嚴格地限制任何給定的類的位置,只要它們能被 Composer 自動加載。接下來我們簡單的介紹一下 `Laravel` 的目錄結構。
### Bootstrap 目錄
`bootstrap` 目錄包含啟動框架的 `app.php` 文件. 該目錄還包含了一個 `cache` 目錄,`cache` 目錄下存放著框架生成的用來提升性能的文件,比如路由和服務緩存文件。
### Config 目錄
`config` 目錄包含應用程序所有的配置文件。鼓勵大家通讀這些配置文件內容,可以更好的了解 `Laravel` 功能。
### Database 目錄
`database` 目錄包含數據填充和遷移文件以及模型工廠類。你還可以把它作為 SQLite 數據庫存放目錄。
### Public 目錄
`public` 目錄包含了入口文件 `index.php`,它是進入應用程序的所有請求的入口點。此目錄還包含了一些你的資源文件(如圖片、JavaScript 和 CSS)。
### Resources 目錄
resource 目錄包含了視圖和未編譯的資源文件(如 LESS、SASS 或 JavaScript)。此目錄還包含你所有的語言文件。
### Routes 目錄
`routes` 目錄包含了應用的所有路由定義,`Laravel` 默認包含了幾個路由文件:`web.php`、`api.php`、 `console.php` 和 `channels.php`。
`web.php` 文件包含 `RouteServiceProvider` 放置在 `web` 中間件組中的路由,它提供會話狀態、`CSRF` 防護和 `cookie` 加密。如果你的應用不提供無狀態的、`RESTful` 風格的 `API`,則所有的路由都應該在 `web.php` 文件中定義。.
`api.php` 文件包含 `RouteServiceProvider` 放置在 `api` 中間件組中的路由,它提供了頻率限制。這些路由都是無狀態的,所以通過這些路由進入應用請求旨在通過令牌進行身份認證,并且不能訪問會話狀態。
`console.php` 文件是定義所有基于控制臺命令閉包函數的地方。每個閉包函數都被綁定到一個命令實例并且允許和命令行 `IO` 方法進行簡單的交互。盡管這些文件沒有定義 `HTTP` 路由,但它也將基于控制臺的入口點(路由)定義到應用程序中。
`channels.php` 用來注冊你的應用支持的所有的事件廣播渠道的地方。
### Storage 目錄
`storage` 目錄包含編譯后的 `Blade` 模板、`session` 會話生成的文件、緩存文件以及框架生成的其他文件。這個目錄被細分成 `app` 、 `framework` 和 `logs` 三個子目錄。`app` 目錄可以用來存儲應用生成的任何文件。 `framework` 目錄用來存儲框架生成的文件和緩存。最后, `logs` 目錄包含應用的日志文件。
### Vendor 目錄
`vendor` 目錄包含你所有的 `Composer` 依賴包。
### App 目錄
應用程序的大部分代碼都在 `app` 目錄內。默認情況下,這個目錄位于命名空間 `App` 下并且會被 `Composer` 按照 `PSR-4 autoloading standard` 標準自動加載。
`app` 目錄包含了各種各樣的目錄,比如 `Console`、`Http` 和 `Providers` 等。`Http` 目錄包含了應用的控制器、中間件和請求。
。
> 還有一些目錄是命令才會生成的,這里先不做演示,后面講解相應功能的時候再說明。
#### Broadcasting 目錄
`Broadcasting` 目錄包含應用程序的所有廣播頻道類。 這些類可以通過使用 `make:channel` 命令來創建。 默認情況下此目錄是不存在的,在創建第一個頻道類時將為你創建此目錄。 要了解有關頻道的更多信息,請查閱 事件廣播.
#### Console 目錄
`Console` 目錄包含了所有自定義的 `Artisan` 命令。這些命令可以通過 `make:command` 來生成。這個目錄還包含了控制臺內核,控制臺內核可以用來注冊你的自定義 `Artisan` 命令和你定義的 計劃任務 的地方
#### Exceptions 目錄
`Exceptions` 目錄包含了應用的異常處理器,也是應用拋出異常的好地方。如果想自定義記錄或者渲染異常的方式,你就要修改此目錄下的 `Handler` 類。
#### Http 目錄
`Http` 目錄包含了控制器、中間件和表單請求。幾乎所有的進入應用的請求的處理邏輯都被放在這里。
### 總結
目錄結構就簡單介紹到這里,簡單的梳理一下 `Laravel` 目錄結構,大家如果對某些功能感興趣可以自己去官網查看文檔,或者瀏覽中文翻譯的文檔。