PHP单体仓库:面向初学者的代码组织方式

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言



PHP开发通常从一个index.php文件开始,但随着项目增长,代码结构化的需求随之而来。许多开发者面临一个两难选择:将所有代码存储在一个仓库(单体仓库)中,还是拆分成多个小型仓库(多仓库)。本文将深入探讨PHP项目的单体仓库概念,展示如何为初学者组织代码,并提供实际示例。



单体仓库(monorepo)是一种将多个项目、库或组件的代码存储在单一版本控制系统(Git)仓库中的方法。在PHP的上下文中,这意味着您的主站点、API、包和工具都位于同一个文件夹中。这简化了依赖管理、重构和部署。



在本文中,您将了解:

  • 什么是单体仓库以及为什么需要它
  • 如何为PHP组织文件夹结构
  • 如何配置Composer以使用单体仓库
  • 实际代码组织的示例


PHP单体仓库的优势



许多PHP初学者认为单体仓库是“代码垃圾场”。实际上,如果组织得当,它是一个强大的工具。以下是主要优点:



  • 导航简便:所有项目组件都在一个地方。无需在仓库之间切换。
  • 统一的依赖版本:您使用一个composer.json文件管理包,从而避免版本冲突。
  • 原子提交:可以在一次提交中更改API、前端和库,从而简化回滚。
  • 简化测试:集成测试运行更快,因为所有组件都在本地可用。
  • 统一的CI/CD:整个项目只有一个构建流水线。


然而,单体仓库并非适合所有人。如果您的团队规模较大(超过20人),或者项目在技术上差异很大,最好考虑多仓库。对于初学者和中等规模的项目,这是理想的选择。



单体仓库结构:基本方案



让我们创建一个典型的PHP单体仓库结构。假设我们有一个带API和多个库的Web应用程序。以下是推荐的文件夹层次结构:



my-php-monorepo/├── apps/│   ├── web/               # 主站点(Laravel、Symfony或纯PHP)│   │   ├── public/│   │   ├── src/│   │   └── config/│   └── api/               # API服务器│       ├── public/│       ├── src/│       └── routes/├── packages/              # 内部库和包│   ├── core/              # 系统核心(基础类)│   │   ├── src/│   │   └── composer.json│   ├── database/          # 数据库操作(迁移、模型)│   │   ├── src/│   │   └── composer.json│   └── utils/             # 工具(验证、日志记录)│       ├── src/│       └── composer.json├── tests/                 # 全局测试├── docker/                # Docker配置├── composer.json          # 根Composer├── composer.lock├── .gitignore└── README.md


说明:

  • apps/ — 包含可执行应用程序(站点、API、控制台脚本)。每个应用程序都有自己的入口点(public/index.php)。
  • packages/ — 您正在开发的内部包。它们通过composer.json使用path仓库进行连接。
  • tests/ — 根测试(例如,检查包之间交互的集成测试)。
  • docker/ — Docker文件(Dockerfile、docker-compose.yml)。


配置Co

博客

书籍推荐