laravel5.5框架目录分析

Laravel目录结构
相比thinkphp来说laravel没有设置model目录也就是模型目录
我们所需要的模型类可以直接放到app文件下面或者在app文件下新建一个model文件
然后来存放我们所需要的模型类

下面我们来分析一下laravel的根目录
根目录

  • App目录

app 目录包含了应用的核心代码,注意不是框架的核心代码,框架的核心代码在 /vendor/laravel/framework 里面。你为应用编写的代码绝大多数都会放到 app 目录中。你应用中几乎所有的类都应该放在这里
主要是存放自己开发的应用代码(里面主要书写 控制器和模型和路由文件)

  • Bootstrap目录

bootstrap 目录包含了少许文件,用于框架的启动和自动载入配置,还有一个 cache 文件夹,里面包含了框架为提升性能所生成的文件,如路由和服务缓存文件,也就是laravel启动目录

  • config目录

目录包含了应用的所有配置文件

  • Database目录

database 目录包含了数据库迁移文件及填充文件,如果有使用 SQLite 的话,你还可以将其作为 SQLite 数据库存放目录。

  • Public目录

public 目录包含了应用入口文件 index.php 和前端资源文件(图片、JavaScript、CSS等),

  • resources目录

resources 目录包含了应用视图文件和未编译的原生前端资源文件(LESS、SASS、JavaScript),以及本地化语言文件。

  • Routes目录

routes 目录包含了应用定义的所有路由
Laravel 默认提供了四个路由文件用于给不同的入口使用:web.php、api.php、 console.php 和 channels.php。
1 web.php 文件包含的路由都位于 RouteServiceProvider 所定义的 web 中间件组约束之内,因而支持 Session、CSRF 保护以及 Cookie 加密功能,如果应用无需提供无状态的、RESTful 风格的 API,那么路由基本上都要定义在 web.php 文件中。
2 api.php 文件包含的路由位于 api 中间件组约束之内,支持频率限制功能,这些路由是无状态的,所以请求通过这些路由进入应用需要通过 token 进行认证并且不能访问 Session 状态。api.php 文件常常用于定义 API 接口的路由,访问里面的路由时,必须加上 /api/ 前缀。
3 console.php 文件用于定义所有基于闭包的控制台命令,每个闭包都被绑定到一个控制台命令并且允许与命令行 IO 方法进行交互,尽管这个文件并不定义 HTTP 路由,但是它定义了基于控制台的应用入口(路由)。
4 channels.php 文件用于注册应用支持的所有事件广播频道。

  • Storage 目录

主要是存放缓存文件和日志文件,需要注意:如果是在Linux环境下,该目录需要有可写的权限

  • Test目录

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

  • Vendor

主要是存放第三方的类库文件,还需要注意该目录还存放laravel框架的源码。注意:如果使用的composer软件管理的,composer下载的类库都是存放在该目录下的。

  • .env 文件

.env 文件是 Laravel 5.5 的环境变量配置文件,用来存放那些会随着环境的变化而变化的变量,比如数据库配置。在不同的环境(比如本地环境和线上环境),数据库的配置很可能不一样,那这个配置就不应该写在 config 目录中,而应该写在 .env 文件中,因为它不会提交到版本库。

由于大部分业务将在app目录下进行,我们再来分析一下根目录下的app目录
根目录下的app目录
应用的核心代码位于 app 目录下,默认情况下,该目录位于命名空间 App 下, 并且被 Composer 通过 PSR-4 自动载入标准自动加载。
说明: 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 目录包含应用的所有服务提供者。服务提供者在应用启动过程中绑定服务到容器、注册事件以及执行其他任务为即将到来的请求处理做好准备工作。

  • Rules 目录

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

参考laravel5.5中文文档:https://learnku.com/docs/laravel/5.5/structure/1284

发布了22 篇原创文章 · 获赞 2 · 访问量 432

猜你喜欢

转载自blog.csdn.net/jianchenn/article/details/105414973
今日推荐