laravel的目录结构

##laravel中目录介绍
-APP目录  
app目录包含了应用的核心代码,注意不是框架的核心代码,框架的核心代码在  
/vendor/laravel/framework里面,此外你为应用编写的代码大多数也会放在这里  
如果基于composer做了php组件化开发时候,这里只是存放了入口性代码。   
-Bootstrap目录  
bootstrap目录包含了少许文件,用于框架的启动和自动加载配置,还有一个cache文件夹  
里面包含了框架为提升性能所生成的文件,如路由和服务缓存文件  
-Config目录  
config目录包含了应用所有的配置文件,包括了应用的默认配置项  
-Database目录  
database目录包含了数据库迁移文件以及填充文件,如果有使用SQLite的话,还可以  
将其作为SQlite数据库存放目录  
-Public  
public目录包含了应用的入口文件index.php和前端资源文件(图片、jsp、css等)该目录  
也是Apache 或 Nginx 等 Web 服务器所指向的应用根目录,这样做的好处  
是隔离了应用核心文件直接暴露于 Web 根目录之下,如果权限系统没做好或服务器配置有  
漏洞的话,很可能导致应用敏感文件被黑客窃取,进而对网站安全造成威胁;  
-Resouces目录  
resouces目录包含了应用视图文件和未编译的原生前端资源文件(LESS、SASS、JSP)  
以及本地化语言文件  
-Routes目录  
routes目录包含了应用定义的所有路由。larave默认提供了四个路由文件用于给  
不同的入口使用web.php api.php console.php channels.php  
wen.php 文件包含的路由都位于RouteServiceProvider所定义的web中间件组约束之内  
因而支持Session CSRF保护以及cookie加密功能,如果应用无需提供无状态的RESTful风格  
的API,那么路由基本都要定义在web.php中  
api.php文件包含的路由位于api中间件组约束之内,支持频率限制功能,这些路由是无状态的  
所以请求通过这些路由进入应用需要通过token进行认证并且不能访问Session状态  
console.php文件用于定义所有基于闭包的控制台命令,每个闭包都被绑定在一个控制台  
命令且允许于命令行IO方法进行交互尽管这个文件不定义HTTP路由,但是他定义了基于  
控制台的应用入口(路由)  
channels文件用于注册应用支持的所有事件广播频道  
-Storage目录  
storage 目录包含了编译后的 Blade 模板、基于文件的 Session、文件缓存,以及其它由框架生成的文件,该目录被细分为成 app、framework 和 logs 子目录,app 目录用于存放应用生成的文件,framework 目录用于存放框架生成的文件和缓存,最后,logs 目录存放的是应用的日志文件。


storage/app/public 目录用于存储用户生成的文件,比如可以被公开访问的用户头像,要达到被 Web 用户访问的目的,你还需要在 public (应用根目录下的 public 目录)目录下生成一个软连接 storage 指向这个目录。你可以通过 php artisan storage:link 命令生成这个软链接。


Tests目录


tests 目录包含自动化测试文件,其中默认已经提供了一个开箱即用的PHPUnit 示例;每一个测试类都要以 Test 开头,你可以通过 phpunit 或 php vendor/bin/phpunit 命令来运行测试。


Vendor目录


vendor 目录包含了应用所有通过 Composer 加载的依赖。


App目录
应用的核心代码位于 app 目录下,默认情况下,该目录位于命名空间 App 下, 并且被 Composer 通过 PSR-4 自动载入标准 自动加载。


app 目录下包含多个子目录,如 Console、Http、Providers等。Console 和 Http 目录提供了进入应用核心的 API,HTTP 协议和 CLI 是和应用进行交互的两种机制,但实际上并不包含应用逻辑。换句话说,它们只是两个向应用发送命令的方式。Console 目录包含了所有开发者编写的 Artisan 命令,Http 目录包含了控制器、中间件和请求等。


其他目录会在你通过 Artisan 命令 make 生成相应类的时候自动生成到 app 目录下。例如,app/Jobs 目录直到你执行 make:job 命令生成任务类时才会出现在 app 目录下。


注:app 目录中的很多类都可以通过 Artisan 命令生成,要查看所有有效的命令,可以在终端中运行 php artisan list make 命令。


Console目录


Console 目录包含应用所有自定义的 Artisan 命令,这些命令类可以使用 make:command 命令生成。该目录下还有 Console/Kernel 类,在这里可以注册自定义的 Artisan 命令以及定义调度任务。


Events目录


这个目录默认不存在,但是可以通过 event:generate 和 make:event 命令创建。该目录用于存放事件类。事件类用于告知应用其他部分某个事件发生情况并提供灵活的、解耦的处理机制。


Exceptions目录


Exceptions 目录包含应用的异常处理器,同时还是处理应用抛出的任何异常的好地方。


Http目录


Http 目录包含了控制器、中间件以及表单请求等,几乎所有通过 Web 进入应用的请求处理都在这里进行。


Jobs目录


该目录默认不存在,可以通过执行 make:job 命令生成,Jobs 目录用于存放队列任务,应用中的任务可以被推送到队列,也可以在当前请求生命周期内同步执行。同步执行的任务有时也被看作命令,因为它们实现了命令模式。


Listeners目录


这个目录默认不存在,可以通过执行 event:generate 和 make:listener 命令创建。Listeners 目录包含处理事件的类(事件监听器),事件监听器接收一个事件并提供对该事件发生后的响应逻辑,例如,UserRegistered 事件可以被 SendWelcomeEmail 监听器处理。


Mail目录


这个目录默认不存在,但是可以通过执行 make:mail 命令生成,Mail 目录包含应用所有邮件相关类,邮件对象允许你在一个地方封装构建邮件所需的所有业务逻辑,然后使用 Mail::send 方法发送邮件。


Notifications目录


这个目录默认不存在,你可以通过执行 make:notification 命令连带创建, Notifications 目录包含应用发送的所有通知,比如事件发生通知。Laravel 的通知功能将通知发送和通知驱动解耦,你可以通过邮件,也可以通过Slack、短信或者数据库发送通知。


Policies目录


这个目录默认不存在,你可以通过执行 make:policy 命令生成策略类来创建, Policies 目录包含了应用所有的授权策略类,策略用于判断某个用户是否有权限去访问指定资源。更多详情,请查看授权文档。


Providers目录


Providers 目录包含应用的所有服务提供者。服务提供者在应用启动过程中绑定服务到容器、注册事件以及执行其他任务为即将到来的请求处理做好准备工作。


在新安装的 Laravel 应用中,该目录已经包含了一些服务提供者,你可以按需添加自己的服务提供者到该目录。


Rules目录


该目录默认不存在,但是会伴随你执行 Artisan 命令 make:rule 自动生成。Rules 目录包含应用的自定义验证规则对象,这些规则用于在单个对象中封装复杂的验证逻辑,想要了解更多的话,请参考验证文档。


 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值