## 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` 目录结构,大家如果对某些功能感兴趣可以自己去官网查看文档,或者浏览中文翻译的文档。