我们有一款产品可以为每个客户量身定制。 确切的自定义是不可预测的 - 我们假设代码中的任何点都可能需要更改。 但是,我们希望保留一个代码库,因为90%以上的代码是相同的,因此我们不必将每个更新或新功能分别合并到每个客户端。
如何做到这一点?
该项目是用PHP编写的Yii框架。
基本上,我们想要这样的东西: 每个客户端都有一个带有代码“镜像”的文件夹。 “镜像”将仅包括为客户定制的那些类。在运行时,将知道客户端身份,并且每次提及类名称都将解析为该类的通用版本 - 如果此客户端不存在客户端特定版本,或者该类的客户端自定义版本 - 如果这样的版本确实存在。
我很感激有关一般设计问题的评论
对上述解决方案有任何意见。
还有其他方法可以实现我想要实现的目标吗?
也许一些代码生成工具用于从当前主代码生成客户端特定版本?
还有实施问题。如何在PHP和Yii中实现它?
我首先想到使用PHP __autoload。但是,无论如何它只会选择一个版本的类。这是一个问题,因为我们需要每次都选择客户端特定的版本,除了一个:在定义类的客户端特定版本时,我们将扩展该类的通用版本。因此,在加载时无法解析类版本,两者都需要加载,并且每次都会使用特定于客户端的版本。
谢谢
答案 0 :(得分:1)
认为svn
,cvs
,git
,所有这些版本控制系统都可以帮助您对每个客户项目的代码进行分支,中继,标记