第三天:探索 Laravel 的目录结构

Laravel 是一个优雅的 PHP 框架,旨在简化现代 Web 应用程序的开发。当您创建一个新的 Laravel 项目时,它带有一个组织良好的目录结构,鼓励最佳实践和明确的关注点分离。让我们深入了解主要目录及其用途。

Laravel 目录结构概述

全新安装的 Laravel 包含以下关键目录:

project-root/
|-- app/
|-- bootstrap/
|-- config/
|-- database/
|-- public/
|-- resources/
|-- routes/
|-- storage/
|-- tests/
|-- vendor/

1. app/ 目录

这是应用程序的核心,大部分逻辑都驻留在此。app/ 目录包含各种应用程序组件的子文件夹:

控制台/:包含自定义 Artisan 命令。

事件/:定义您的应用程序可以监听的事件。

Exceptions/:处理异常和自定义错误报告。

网址/:

控制器/:容纳应用程序的控制器。

Middleware/:存储用于过滤 HTTP 请求的中间件。

Models/:Eloquent 模型的默认位置。

Observers/:保存用于处理模型事件的观察者类。

Policies/:包含特定模型的授权逻辑。

Providers/:存储引导应用程序各个部分的服务提供商。

2. bootstrap/ 目录

此目录包含应用程序的初始引导文件。这里最值得注意的文件是 app.php,它初始化 Laravel 框架。

此外,它还包含一个 cache/ 文件夹,用于存储框架生成的缓存文件以提高性能。

3. config/ 目录

顾名思义,此目录包含应用程序的所有配置文件。这些文件允许您管理服务、数据库连接、邮件、缓存等的设置。例如:

app.php 用于核心应用程序设置。

database.php 用于数据库配置。

mail.php 用于电子邮件服务设置。

4. database/ 目录

该目录管理所有与数据库相关的文件:

工厂/:包含用于播种测试数据的工厂类。

migrations/:存储用于定义数据库模式的迁移文件。

seeders/:包含用于用样本数据填充数据库的种子。

5. public/ 目录

此目录是 Web 请求的入口点,包含应用程序的前端文件。主要内容包括:

index.php:处理所有传入请求的主文件。

静态资产,例如图像、CSS 和 JavaScript 文件。

6. resources/ 目录

此目录存储将被编译或用于生成视图的应用程序资源。子目录包括:

views/:包含应用程序前端的 Blade 模板文件。

lang/:保存用于本地化的语言文件。

css/ 和 js/(在 sass/ 和 js/ 内):CSS 和 JavaScript 资产的默认文件夹。

7. routes/ 目录

这是应用程序的路由逻辑所在的位置。Laravel 为不同的路由类型提供了单独的文件:

web.php:处理 Web 请求的路由(通常带有会话和 cookie)。

api.php:处理 API 请求的路由(无状态)。

console.php:定义自定义 Artisan 命令。

channels.php:定义事件广播频道。

8. storage/ 目录

该目录包含您的应用程序和框架本身生成的文件:

app/:存储应用程序生成的文件。

framework/:存储框架缓存、会话和编译的视图。

logs/:包含用于调试和错误跟踪的日志文件。

9. tests/ 目录

所有应用程序测试都存储在此处。默认情况下,它包含功能和单元测试的目录:

功能/:评估整个​​应用程序堆栈的功能的测试。

Unit/:验证特定功能或类的测试。

10. vendor/ 目录

此目录包含通过 Composer 安装的所有第三方软件包。您永远不应直接修改此文件夹。

如何导航结构

在 Laravel 中开发时,了解每个目录的用途有助于你逻辑地组织代码。例如:

  • 将业务逻辑放在 app/Models 内的模型中。
  • 在 routes/web.php 或 routes/api.php 中写入自定义路由。
  • 将可重复使用的组件(例如布局)保留在资源/视图中。
  • 管理目录结构的技巧

    遵循 Laravel 约定:Laravel 具有预定义的结构是有原因的 - 除非绝对必要,否则请坚持它。

    使用子文件夹实现可扩展性:对于较大的项目,请考虑在控制器或模型内创建子文件夹来对相关文件进行分组。

    利用 artisan 命令:使用 php artisan make:model、php artisan make:controller 等命令自动将文件放置在正确的位置。

    通过掌握 Laravel 的目录结构,您将有信心有效地导航、维护和扩展您的项目。请继续关注第 4 天,我们将深入研究如何配置 Laravel 以满足您的开发需求!