先按功能边界拆分模块,如认证、支付等,每个包单一职责;再创建标准Composer项目,通过路径仓库引入主项目逐步迁移。

将一个大型项目拆分成多个 Composer 包,核心是解耦功能、明确职责、提升复用性。重点不是技术操作,而是设计思路。以下是具体做法。
观察项目中哪些部分可以独立存在。比如用户认证、支付处理、日志服务、文件上传等,这些通常具备清晰的输入输出和独立逻辑。
每个包应有单一职责,对外暴露接口或服务类,内部实现可自由调整。
每个子包是一个标准的 Composer 项目,包含自己的 composer.json 和命名空间。
/packages/auth/
src/
AuthManager.php
UserProvider.php
composer.json
{
"name": "acme/auth",
"type": "library",
"autoload": {
"psr-4": {
"Acme\Auth\": "src/"
}
},
"require": {
"php": "^8.1"
}
}注意命名空间与目录结构匹配,便于自动加载。
使用 Composer 的路径仓库(path repository)管理本地依赖,开发阶段无需推送到 Packagist。
在主项目的 composer.json 中添加:
"repositories": [
{
"type": "path",
"url": "./packages/auth"
},
{
"type": "path",
"url": "./packages/pdf-generator"
}
]然后正常 require:
"require": {
"acme/auth": "*",
"acme/pdf-generator": "*"
}执行 composer update 即可安装并自动加载。
不要一次性拆完。先选一个边界清晰的模块试点。
后期可发布到私有 Satis 或 Packagist,实现跨项目复用。
基本上就这些。关键是让每个包能独立存在,主项目只负责组合它们。这样维护、测试、复用都更轻松。
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号