0

0

laravel项目代码结构的最佳组织方式_Laravel项目代码结构最佳实践指南

冰火之心

冰火之心

发布时间:2025-10-06 14:48:02

|

504人浏览过

|

来源于php中文网

原创

按业务领域组织代码可提升Laravel项目可维护性。1. 在app/下按模块划分目录,如Orders、Users,集中管理对应模型、控制器、请求类等。2. 分离业务逻辑,使用Action处理单一操作(如CreateOrderAction),Service协调复杂流程(如CheckoutService)。3. 使用DTO规范数据传递,提高类型安全。4. 路由按模块分组,请求类放入模块内Http/Requests目录。5. 用API Resource统一响应格式。6. 测试目录结构与应用一致,Feature和Unit测试对应功能与类。7. 配置、事件、中间件等按需组织,避免过度使用Trait。小项目可用默认结构,中大型项目推荐领域驱动设计,逐步演进代码结构。

laravel项目代码结构的最佳组织方式_laravel项目代码结构最佳实践指南

Laravel 自带清晰的目录结构,适合中小型项目快速开发。但随着业务增长,若不及时调整代码组织方式,容易导致控制器臃肿、模型承担过多逻辑、代码复用困难等问题。合理的代码结构能提升可维护性、团队协作效率和测试便利性。以下是经过实践验证的 Laravel 项目代码结构最佳组织方式。

按功能模块划分目录(Domain-Driven Design 思路)

默认的 App 目录按技术职责划分(如 Models、Http、Console),但在复杂项目中建议转向按业务领域组织代码。

app/ 下创建业务模块目录,例如:

  • app/Orders — 订单相关逻辑
  • app/Users — 用户管理
  • app/Payments — 支付处理

每个模块内包含该领域所需的类:

Orders/
├── Actions/
├── DataTransferObjects/
├── Events/
├── Exceptions/
├── Http/Controllers/
├── Http/Requests/
├── Models/Order.php
├── Observers/OrderObserver.php
├── Policies/OrderPolicy.php
├── Services/
└── Traits/

这种方式让所有与订单相关的代码集中管理,便于查找和维护。

分离业务逻辑:使用 Action 和 Service 类

避免将业务逻辑写在控制器或模型中。使用专门类来封装操作。

  • Action 类:处理单一职责的操作,如“创建订单”、“发送通知”。命名建议以动词结尾,如 CreateOrderAction
  • Service 类:协调多个 Action 或外部服务,用于复杂流程,如“完成下单流程”。

示例:

app/Orders/Actions/CreateOrderAction.php
app/Orders/Services/CheckoutService.php

调用时在控制器中注入服务或直接执行 Action,保持控制器轻量。

使用数据传输对象(DTO)规范输入输出

当请求参数较多或需跨层传递数据时,使用 DTO 可提高类型安全和可读性。

安装 spatie/data-transfer-object 包,定义结构化数据类:

RecoveryFox AI
RecoveryFox AI

AI驱动的数据恢复、文件恢复工具

下载
app/Orders/DataTransferObjects/OrderData.php

DTO 可用于表单请求、Action 输入、API 响应等场景,减少数组传递带来的错误。

合理组织 HTTP 层

路由建议使用模块分组,通过 RouteServiceProvider 加载模块下的路由文件。

  • routes/orders.php 定义订单相关路由
  • RouteServiceProvider 中引入并加前缀(如 /api/orders)

请求类(FormRequest)放在对应模块的 Http/Requests 目录下,便于权限和验证规则统一管理。

资源类与响应格式标准化

使用 Laravel 的 API Resource 统一输出格式。

为每个模型创建对应的 Resource 类:

app/Orders/Resources/OrderResource.php
app/Orders/Resources/OrderCollection.php

在控制器中返回 new OrderResource($order),确保前后端数据结构一致。

测试目录同步结构

测试目录也应反映应用结构。在 tests/Feature/ 下建立对应模块目录:

tests/Feature/Orders/CreateOrderTest.php
tests/Feature/Orders/CheckoutTest.php

单元测试可放在 Unit/ 目录下测试 Action、Service 等类。

其他优化建议

  • 配置文件:自定义配置放在 config/ 下独立文件,如 config/payments.php
  • 事件与监听器:按模块组织,或在 app/Listeners 下分目录
  • 中间件:通用中间件放全局,特定逻辑可放在模块的 Http/Middleware
  • Trait 和 Helper:尽量少用 Trait,优先考虑组合;Helper 函数放在 app/Support/helpers.php 并在 composer.json 中自动加载

基本上就这些。关键不是完全照搬结构,而是根据项目规模逐步演进。小项目可保持默认结构,中大型项目推荐按领域驱动方式组织。清晰的命名和一致的模式比复杂的架构更重要。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

320

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

278

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

372

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

374

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

85

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

65

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

68

2025.08.05

composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

153

2023.12.25

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

158

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 10万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号