laravel 学习指南 第六章 第二节
- TOC
 {:toc}
6.2 应用目录结构
6.2.1 简介
Laravel 应用默认的目录结构试图为不管是大型应用还是小型应用提供一个好的起点,当然,你可以自己按照喜好重新组织应用目录结构,Laravel 对类在何处被加载没有任何限制——只要 Composer 可以自动载入它们即可。
6.2.2 根目录
新安装的 Laravel 应用包含许多文件夹:
| 目录名称 | 目录说 | 
|---|---|
| app | 目录包含了应用的核心代码 | 
| bootstrap | 目录包含了少许文件用于框架的启动和自动载入配置 | 
| bootstrap/cache | 用于包含框架生成的启动文件以提高性能 | 
| config | 目录包含了应用所有的配置文件 | 
| database | 目录包含了数据迁移及填充文件,如果你喜欢的话还可以将其作为 SQLite 数据库存放目录 | 
| public | 目录包含了前端控制器和资源文件(图片、JavaScript、CSS等) | 
| resources | 目录包含了视图文件及原生资源文件(LESS、SASS、CoffeeScript),以及本地化文件 | 
| storage | 目录包含了编译过的Blade模板、基于文件的session、文件缓存,以及其它由框架生成的文件 | 
| storage/app | 目录用于存放应用要使用的文件 | 
| storage/framework | 目录用于存放框架生成的文件和缓存 | 
| storage/logs | 目录包含应用的日志文件 | 
| tests | 目录包含自动化测试,其中已经提供了一个开箱即用的PHPUnit示例 | 
| vendor | 目录包含Composer依赖 | 
6.2.3 App目录
默认情况下,在项目的App文件夹,并且被 Composer 通过 PSR-4自动载入标准 自动加载。可以通过Artisan命令app:name来修改该命名空间。
App目录下有多个子目录。
Console和Http目录提供了进入应用核心的API。
它们是两个向应用发布命令的方式。
Console目录包含了所有的Artisan命令。 
Http目录包含了控制器,中间件请求等等。
Jobs目录是放置列队任务的地方,应用中的任务可以被队列化,也可以在当前请求生命周期内同步执行。
Events目录是放置事件类的地方,事件可以同于通知应用其他部分给定的动作已经发生,并提供灵活的解耦的处理。
Listeners目录包含事件的处理器类,处理器接收一个事件并提供对该事件发生后的响应逻辑。
例如,UserRegstered事件可以被SendWelcomeEmail监听器处理。
Exceptions目录包含应用的异常处理器,同时还是处理应用抛出的异常的好地方。
注意:app目录中的很多类都可以通过Artisan命令生成,要查看所有命令,使用命令:php artisan list make