跳转到主要内容

简介

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

根目录

创建新的 Laravel 项目后,会生成如下的目录结构。
example-app/
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── storage/
├── tests/
├── vendor/
├── .env
├── artisan
└── composer.json

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 两个路由文件。
文件用途
web.php面向浏览器的路由。会应用提供 Session、CSRF 保护和 Cookie 加密的 web 中间件组。
console.php通过闭包定义 Artisan 命令的文件。
api.php无状态的 API 路由。通过 install:api 命令添加。
channels.php用于注册事件广播频道的文件。

storage/ 目录

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

tests/ 目录

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

vendor/ 目录

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

app/ 目录详解

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

重要文件

.env 文件

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

DB_CONNECTION=sqlite

artisan 文件

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

下一步

路由

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