本篇文章旨在讨论如何组织通用型项目代码结构,以PHP YII2框架为例做说明,设计思想与语言本身无关。
以下是本文的大纲业务服务型项目系统定位
基础功能组件
业务功能组件
基础功能组件与业务模块组件异同
宿主工程
模块之间调用关系业务服务型项目系统定位
业务服务型项目,包括业务对外SOA API接口,微服务接口,业务中台服务,业务服务中间件,不包括通用的官网类似的MVC项目,CMS系统。
采用自顶而下,分而治之的思想,业务服务型项目主要包括基础功能组件,业务功能组件,公共方法类库,宿主工程四大部分基础功能组件
基础功能组件由具体的基础功能模块构建而成,基础功能组件应该满足以下几个条件
1 功能与实际业务无关。属于系统底层框架或者代码模块
2 代码结构稳定,改动频率小,如果改动需要经过多人审核,review。
以上两点是衡量某项功能是否属于基础功能模块的基本标准。我们常见的可以纳入基础功能范围的有 短信服务,移动端推送功能服务,文件存储服务,固定的基础服务,Excel Word文件导出等业务功能组件
业务功能组件由具体的业务模块构建而成,为满足产品或市场人员的需求为主。业务功能模块满足以下几个特定
1 功能灵活多变,同时兼顾解耦特定
2各个业务模块之间约定功能边界。
单方向调用,避免蜘蛛网式的嵌套调用
3 通过接口或者本地RPC保持与基本功能组件层次化的调用
业务功能组件跟着产品线,由业务决定,常见的业务功能组件如用户信息组