# PHP 项目结构设计:一个项目应该怎么拆

举报
yd_220371319 发表于 2026/10/21 15:23:37 2026/10/21
【摘要】 PHP 项目结构设计:一个项目应该怎么拆项目从几百行增长到几万行以后,目录结构会直接影响维护成本。 ControllerController 处理 HTTP 层:请求 ↓Controller负责读取请求、调用业务层和返回响应。不要把所有 SQL 都塞进 Controller。 ServiceService 负责业务逻辑:Controller ↓Service RepositoryRepos...

PHP 项目结构设计:一个项目应该怎么拆

项目从几百行增长到几万行以后,目录结构会直接影响维护成本。

Controller

Controller 处理 HTTP 层:

请求
 ↓
Controller

负责读取请求、调用业务层和返回响应。

不要把所有 SQL 都塞进 Controller。

Service

Service 负责业务逻辑:

Controller
 ↓
Service

Repository

Repository 可以封装数据访问:

Service
 ↓
Repository
 ↓
Database

这样业务层不需要到处知道 SQL。

DTO

DTO 可以明确数据结构:

final class RegisterUserData
{
    public function __construct(
        public readonly string $email,
        public readonly string $password
    ) {}
}

Middleware

Middleware 适合处理:

认证
权限
日志
限流
CORS

一个实际结构

src/
├── Controller/
├── Service/
├── Repository/
├── Entity/
├── DTO/
├── Middleware/
└── Support/

config/
public/
storage/
tests/

这不是唯一答案。

最重要的是每个模块有清晰职责。

不要过度设计

小项目没必要强行套几十种设计模式。

架构应该随着复杂度增长,而不是提前制造复杂度。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。