跳转到主要内容

简介

Laravel 默认的应用结构为大型和小型应用都提供了合适的起点。 不过,你也可以完全自由地组织应用结构。 Laravel 几乎不限制类应放在什么位置。只要 Composer 能自动加载即可。

根目录

创建新的 Laravel 项目后,会生成如下的目录结构。

app/ 目录

存放应用核心代码的目录。 控制器、模型、中间件等,应用中几乎所有的类都放在这里。 默认情况下,包含 HttpModelsProviders 三个子目录。 通过 Artisan 命令生成类时,也会自动创建其他子目录。

bootstrap/ 目录

包含用于启动框架的 app.php 文件。 此外,还包含用于存放路由缓存、服务缓存等性能优化文件的 cache/ 目录。

config/ 目录

存放应用的所有配置文件。 建议你阅读这些文件,以便了解可用的选项。

database/ 目录

存放数据库迁移、模型工厂、Seeder。 SQLite 数据库文件也可以放在这里。

public/ 目录

包含所有请求的入口文件 index.php。 另外,图片、JavaScript、CSS 等静态资源也存放于此。
请将 Web 服务器的文档根目录设置为 Laravel 项目的 public/ 目录。 如果直接暴露项目根目录或其他子目录,可能会导致敏感文件被访问。

resources/ 目录

存放视图以及尚未编译的 CSS、JavaScript 等原始资源文件。

routes/ 目录

存放应用的所有路由定义。 默认包含 web.phpconsole.php 两个路由文件。

storage/ 目录

存放日志、编译后的 Blade 模板、基于文件的 Session、文件缓存等由框架生成的文件。 分为 app/framework/logs/ 三个子目录。

tests/ 目录

存放自动化测试。 默认包含通过 PestPHPUnit 编写的单元测试与功能测试示例。

vendor/ 目录

存放 Composer 依赖。请不要将该目录提交到版本控制。

app/ 目录详解

app 目录下的大多数类都可以通过 Artisan 命令生成。 可以运行以下命令查看可用的命令:
存放控制器、中间件与 Form Request。 应用中几乎所有的请求处理逻辑都放在这里。
存放所有的 Eloquent 模型类。 每张数据库表对应一个「模型」,用来查询和写入数据。
存放应用的所有服务提供者。 服务提供者负责将服务绑定到容器、注册事件等启动应用所需的处理。
存放所有自定义 Artisan 命令。 可以通过 make:command 命令生成。
存放应用的所有自定义异常。 可以通过 make:exception 命令生成。

重要文件

.env 文件

用于管理不同环境下不同的配置值(如数据库连接信息、API 密钥等)。 config/ 中的配置文件会通过 env() 辅助函数引用这些值。

artisan 文件

Artisan 命令行工具的入口。 以 php artisan <命令名> 的形式运行。

下一步

路由

学习如何定义路由,并将 URL 与应用逻辑绑定起来。
最后修改于 2026年7月18日