完整的 Webman 框架设计规范、架构指南和最佳实践
English | 中文
完整的目录结构 + 代码示例,展示如何在不同场景下应用架构规范:
- 保持 Webman 默认目录 - 不改变框架原有结构
- 目录全小写 - 跨平台兼容性
- 依赖方向清晰 - Domain 层不依赖框架
- 接口与实现分离 - 使用 Contract 定义接口
- 遵循 PER Coding Style - 统一代码风格
app/
├─ controller/ # Webman 默认 - HTTP 入口
├─ model/ # Webman 默认 - ORM 模型
├─ middleware/ # Webman 默认 - 中间件
├─ process/ # Webman 默认 - 自定义进程
├─ service/ # 应用层 - 用例编排
├─ domain/ # 领域层 - 业务逻辑
│ └─ <bounded-context>/ # 限界上下文 (order/user/billing)
│ ├─ entity/ # 实体
│ ├─ enum/ # 枚举
│ └─ vo/ # 值对象
│ ├─ event/ # 领域事件
│ └─ rule/ # 业务规则
├─ contract/ # 接口定义
├─ infrastructure/ # 基础设施 - 仓储实现
└─ support/ # 通用工具
controller → service → domain + contract
↓
infrastructure → contract + domain
禁止反向依赖:
- ❌ domain 不能依赖 framework/model/infrastructure
- ❌ controller 不能直接依赖 model/infrastructure
- Controller 变薄 - 业务逻辑从控制器中解耦
- 可测试性 - Domain 层纯 PHP,无需启动框架即可测试
- 可维护性 - 清晰的分层和依赖方向
- 可扩展性 - 平滑迁移到插件系统或微服务
- 团队协作 - 统一的代码风格和架构模式
适合使用本规范:
- 中大型项目(预期代码量 > 10k 行)
- 复杂业务逻辑(状态机、权限、计算规则)
- 多人协作开发
- 需要长期维护的项目
可选使用:
- 小型 CRUD 项目
- 快速原型验证
- 个人学习项目
为 AI 代码助手提供的 Webman 最佳实践规范:
npx skills add kitephp/webman-design-skills仓库地址:https://github.com/kitephp/webman-design-skills
欢迎提交 Issue 和 Pull Request!
- 发现错误或不清晰的地方
- 补充更多系统示例
- 改进代码示例
- 翻译改进
- 必须遵循 PER Coding Style
- 包含必要的注释
- 展示关键流程,不需要完整实现
- 代码简洁,突出重点
MIT License - 详见 LICENSE 文件
- 提交 Issue: GitHub Issues
- 讨论交流: GitHub Discussions