# 1、简介 >[info]本章主要是对kppw项目结构目录介绍和简介 # 2、根目录 ## App目录 >[info]app目录包含了应用的核心代码,此外你为应用编写的代码绝大多数也会放到这里; ## Bootstrap目录 >[info]bootstrap目录包含了少许文件,用于框架的启动和自动载入配置,还有一个cache文件夹用于包含框架为提升性能所生成的文件,如路由和服务缓存文件; ## Config目录 >[info]config目录包含了应用所有的配置文件,建议通读一遍这些配置文件以便熟悉所有配置项; ## Database目录 >[info]database目录包含了数据迁移及填充文件,如果你喜欢的话还可以将其作为 SQLite 数据库存放目录; ## Libraries目录 >[info] Libraries目录包含了常用的公共函数和项目使用的第三方类,用户后期可以根据需要自己增加和删减; ## Public目录 >[info]public目录包含了入口文件index.php和前端资源文件(图片、JavaScript、CSS等); ## Resources目录 >[info]resources目录包含了视图文件及原生资源文件(LESS、SASS、CoffeeScript),以及本地化文件; ## Storage目录 >[info]storage目录包含了编译过的Blade模板、基于文件的session、文件缓存,以及其它由框架生成的文件,该目录被细分为成app、framework和logs子母录,app目录用于存放应用要使用的文件,framework目录用于存放框架生成的文件和缓存,最后,logs目录包含应用的日志文件; >[info]storage/app/public 目录用于存储用户生成的文件,比如可以被公开访问的用户头像,要达到被访问的目的,你还需要在public目录下生成一个软连接 storage 指向这个目录。你可以通过 php artisan storage:link 命令生成这个软链接。 ## Tests目录 >[info]tests目录包含自动化测试,其中已经提供了一个开箱即用的PHPUnit示例;每一个测试类都要以 Test 开头,你可以通过 phpunit 或 php vendor/bin/phpunit 命令来运行测试。 ## Composer.json文件 >[info]comoposer.json文件主要介绍本项目使用的依赖包的版本和编码规范。 ## Vendor目录 >[info]vendor目录包含Composer依赖。 # 3、App目录 >[info]应用的核心代码位于app目录下,默认情况下,该目录位于命名空间 App 下, 并且被 Composer 通过 PSR-4自动载入标准 自动加载。 >[info]app目录下包含多个子目录,如Console、Http、Providers等。Console和Http目录提供了进入应用核心的API,HTTP协议和CLI是和应用进行交互的两种机制,但实际上并不包含应用逻辑。换句话说,它们只是两个向应用发布命令的方式。Console目录包含了所有的Artisan命令,Http目录包含了控制器、中间件和请求等。 >[info]其他目录将会在你通过Artisan命令make生成相应类的时候生成到app目录下。例如,app/Jobs目录直到你执行 make:job 命令生成任务类时才会出现在app目录下。 >[info]注意:app目录中的很多类都可以通过Artisan命令生成,要查看所有有效的命令,可以在终端中运行php artisan list make命令。 ## Console目录 >[info]Console目录包含应用所有自定义的Artisan命令,这些命令类可以使用make:command命令生成。该目录下还有console核心类,在这里可以注册自定义的Artisan命令以及定义调度任务。 ## Events目录 >[info]这个目录默认不存在,但是可以通过 event:generate 和 make:event 命令创建。该目录用于存放事件类。事件类用于告知应用其他部分某个事件发生并提供灵活的、解耦的处理机制。 ## Exceptions目录 >[info]Exceptions目录包含应用的异常处理器,同时还是处理应用抛出的任何异常的好地方。如果你想要自定义异常如何记录异常或渲染,需要修改 Handler 类。 ## Http目录 >[info]Http 目录包含了控制器、中间件以及表单请求等,几乎所有进入应用的请求处理都在这里进行。 ## Jobs目录 >[info]该目录默认不存在,可以通过执行 make:job 命令生成,Jobs目录用于存放队列任务,应用中的任务可以被队列化,也可以在当前请求生命周期内同步执行。同步执行的任务有时也被看作命令,因为它们实现了命令模式。 ## Listeners目录 >[info]这个目录默认不存在,可以通过执行 event:generate 和 make:listener 命令创建。Listeners目录包含处理事件的类(事件监听器),事件监听器接收一个事件并提供对该事件发生后的响应逻辑,例如,UserRegistered事件可以被SendWelcomeEmail监听器处理。 ## Modules目录 >[info]这个目录默认不存在,需要通过安装 "caffeinated/modules"依赖包生成,为了便于后期二次开发,项目采用了模块化结构目录,该目录下的模块之前互不影响,用户可以根据需要新增模或者删减模块。 ## Mail目录 >[info]这个目录默认不存在,但是可以通过执行 make:mail 命令生成,Mail目录包含邮件发送类,邮件对象允许你在一个地方封装构建邮件所需的所有业务逻辑,然后使用 Mail::send 方法发送邮件。 ## Notifications目录 >[info]这个目录默认不存在,你可以通过执行 make:notification 命令创建, Notifications 目录包含应用发送的所有通知,比如事件发生通知。Laravel的通知功能将通知发送和通知驱动解耦,你可以通过邮件,也可以通过Slack、短信或者数据库发送通知。 ## Policies目录 >[info]这个目录默认不存在,你可以通过执行 make:policy 命令来创建, Policies 目录包含了所有的授权策略类,策略用于判断某个用户是否有权限去访问指定资源。更多详情,请查看授权文档。 ## Providers目录 >[info]Providers 目录包含应用的所有服务提供者。服务提供者在启动应用过程中绑定服务到容器、注册事件以及执行其他任务以为即将到来的请求处理做准备。 >[info]在新安装的Laravel应用中,该目录已经包含了一些服务提供者,你可以按需添加自己的服务提供者到该目录。