laravel-Laravel目录结构
Laravel目录结构
app目录
包含应用程序的核心代码,你应用中几乎所有的类都应该放在这里
Bootstrap目录
包含引导框架并配置自动加载的文件,该目录中还有一个cache目录,存放着框架生成的用来提升性能的文件,比如路由和服务缓存文件
Config目录
包含应用程序的所有的配置文件,
Database目录
包含数据填充和迁移文件,你还可以把它作为sqlite数据库存放目录
Public目录
包含了入口文件index.php,它是进入应用程序的所有请求的入口点,此目录还包含了一些你的资源文件(图片,js,css)
Resources目录
包含了视图和未编译的资源文件(less,sass,js),还包含你所有的语言文件
Routes目录
包含了应用的所有路由定义,laravel默认的包含了几个路由文件:web。php,api.php,console.php,channels.php
web.php
包含RouteServiceProvider放置在api中间件组的路由,它提供会话状态,CSRF防护和cookie加密,如果你的应用不提供无状态的RESTful风格的api,则所有的路由都应该在web。php中定义
api.php
包含RouteServiceprovider放置在api中间件组的路由,它提供频率限制,这些路由都是无状态的,所以通过这些路由进入应用请求只在通过令牌进行身份认证,并且不能访问会话状态
console.php
定义所有基于闭包的控制台命令的地方,每个闭包都被绑定到一个命令实例并且允许和命令行IO方法进行简单的交互,尽管这些文件没有定义Http路由,但它也将基于控制台的入口点(路由)定义到应用程序中
channels.php
用来注册你的应用支持的所有支持对所有的事件广播渠道的地方
Storage目录
包含编译的Blade模版,基于文件的回话和文件缓存,以及框架生成的其他文件,这个目录被分为三个子目录,app,frameworkm,logs
app目录可以用以来存储应用生成的任何文件
framework目录用来存储框架生成的文件和缓存
logs目录包含应用的日志文件
Tests目录
包含自动化测试文件,laravel已内置了PHPUnit的测试范例,每个测试类都应该以Test作为后缀,你可以使用phpunit或者php vendor/bin/phpunit命令来运行测试
Vendor目录
包含了你的composer依赖包
APP目录结构
应用程序的核心代码位于app目录,默认,这个目录位于命名空间App下
包含各种目录,console,http Providers等,其中console和http提供进入应用核心的api,http协议和CLI都只是应用交互的机制,实际上并不包括应用逻辑,他们只是两种向应用发出命令的方法,console目录包含了所有的Artisan命令,http目录包含了应用的控制器,中间件和请求
当你通过Artisan提供的make命令来生成类时,会在app中生成各种各样的目录,例如,在执行Artisan命令make:job 来生成任务类之前,app/jbos目录都不会存在
console目录
包含了所有自定义的Artisan命令,这些命令通过make:command来生成,这个目录还包含了控制器内核,可以用来注册你的自定义Artisan命令和你定义的计划任务的地方
Events目录
默认不存在,他会在你运行Artisan命令 event:generate 或 event:make 时生成,Events目录存在放了事件类,可以使用事件来提醒应用其他部分发生了挺稳定的操作,为应用提供了大量的灵活性和解耦
Exceptions目录
包含了应用的异常处理器,也是应用抛出异常的地方,如果想自定义记录或者渲染异常的方式,你就要修改此目录下的Handler类
http目录
包含控制器,中间件,表单请求,几乎所有的进入应用的请求的处理逻辑都在这里
jobs目录
默认不存在,运行artisan命令 make:job 时生成,这个目录存放了应用的队列任务,应用的任务可以被推送到队列或者在当前请求的生命周期内同步运行,在当前请求期间同步运行的任务可以看做是一个命令,因为他们是命令模式
listeners目录
默认不存在,运行artisan命令 event:generate 或 make:listener 时生成,listeners目录包含了用来处理事件的类,事件监听器接受事件实例并执行响应该事件被触发的逻辑,例如 UserRegistered事件可能由SendWelcomeEmail监听器处理
Mail目录
默认不存在,运行artisan命令 make:mail 时生成,Mail目录包含应用所有的邮件发送类,邮件对象允许你将构建邮件的逻辑封装在可以使用 Mail:send方法来发送邮件的地方
Notifications目录
默认不存在,运行artisan命令 make:notifications时生成,Notifications目录包括应用发送的所有通知,比如关于在应用中发送的简单通知,laravel的通知功能抽象了通知发送,可以通过各种驱动发送通知,或是存储在数据库中
Plicies目录
默认不存在,运行artisan命令 make:policy来创建,Policies目录包含了应用的授权策略类,策略可以来决定一个用户是否有权限去操作指定资源
Providers目录
包含应用的所有服务提供器,服务提供器通过在服务容器中绑定服务,注册事件,以及执行其他任务来为即将到来的请求做准备来启动应用
Rules目录
默认不存在 运行artisan命令 make:rule 时创建,Rules目录包含应用自定义验证的规则对象