简介
Laravel 默认的应用结构为大型和小型应用都提供了合适的起点。 不过,你也可以完全自由地组织应用结构。 Laravel 几乎不限制类应放在什么位置。只要 Composer 能自动加载即可。根目录
创建新的 Laravel 项目后,会生成如下的目录结构。app/ 目录
存放应用核心代码的目录。
控制器、模型、中间件等,应用中几乎所有的类都放在这里。
默认情况下,包含 Http、Models、Providers 三个子目录。
通过 Artisan 命令生成类时,也会自动创建其他子目录。
bootstrap/ 目录
包含用于启动框架的 app.php 文件。
此外,还包含用于存放路由缓存、服务缓存等性能优化文件的 cache/ 目录。
config/ 目录
存放应用的所有配置文件。
建议你阅读这些文件,以便了解可用的选项。
database/ 目录
存放数据库迁移、模型工厂、Seeder。
SQLite 数据库文件也可以放在这里。
public/ 目录
包含所有请求的入口文件 index.php。
另外,图片、JavaScript、CSS 等静态资源也存放于此。
resources/ 目录
存放视图以及尚未编译的 CSS、JavaScript 等原始资源文件。
routes/ 目录
存放应用的所有路由定义。
默认包含 web.php 与 console.php 两个路由文件。
| 文件 | 用途 |
|---|---|
web.php | 面向浏览器的路由。会应用提供 Session、CSRF 保护和 Cookie 加密的 web 中间件组。 |
console.php | 通过闭包定义 Artisan 命令的文件。 |
api.php | 无状态的 API 路由。通过 install:api 命令添加。 |
channels.php | 用于注册事件广播频道的文件。 |
storage/ 目录
存放日志、编译后的 Blade 模板、基于文件的 Session、文件缓存等由框架生成的文件。
分为 app/、framework/、logs/ 三个子目录。
tests/ 目录
存放自动化测试。
默认包含通过 Pest 或 PHPUnit 编写的单元测试与功能测试示例。
vendor/ 目录
存放 Composer 依赖。请不要将该目录提交到版本控制。
app/ 目录详解
app 目录下的大多数类都可以通过 Artisan 命令生成。
可以运行以下命令查看可用的命令:
Http/ 目录
Http/ 目录
存放控制器、中间件与 Form Request。
应用中几乎所有的请求处理逻辑都放在这里。
Models/ 目录
Models/ 目录
存放所有的 Eloquent 模型类。
每张数据库表对应一个「模型」,用来查询和写入数据。
Providers/ 目录
Providers/ 目录
存放应用的所有服务提供者。
服务提供者负责将服务绑定到容器、注册事件等启动应用所需的处理。
Console/ 目录
Console/ 目录
存放所有自定义 Artisan 命令。
可以通过
make:command 命令生成。Exceptions/ 目录
Exceptions/ 目录
存放应用的所有自定义异常。
可以通过
make:exception 命令生成。重要文件
.env 文件
用于管理不同环境下不同的配置值(如数据库连接信息、API 密钥等)。
config/ 中的配置文件会通过 env() 辅助函数引用这些值。
artisan 文件
Artisan 命令行工具的入口。
以 php artisan <命令名> 的形式运行。
下一步
路由
学习如何定义路由,并将 URL 与应用逻辑绑定起来。