【发布时间】:2010-11-11 22:30:46
【问题描述】:
我们的产品正在为每个客户稍微定制。 确切的定制是不可预测的——我们假设代码中的任何一点都可能需要更改。 但是,我们希望保留一个代码库,因为 90% 以上的代码都是相同的,因此我们不必将每个更新或新功能分别合并到每个客户端。
如何做到这一点?
该项目是用 PHP 和 Yii 框架编写的。
基本上,我们想要这样的东西: 每个客户都会有一个包含代码“镜像”的文件夹。该“镜像”将仅包括为客户定制的那些类。然后,在运行时,客户身份将是已知的,并且每次提及类名称都将解析为该类的通用版本 - 如果此客户端不存在客户端特定版本,或者该类的客户端自定义版本 - 如果这样的版本确实存在。
我会感谢 cmets 关于一般设计问题。
上述解决方案的任何 cmets。
还有其他方法可以实现我想要实现的目标吗?
也许是一些代码生成工具,用于从当前主代码生成客户端特定版本?
还有实施问题。这在 PHP 和 Yii 中如何实现?
我想首先使用 PHPs __autoload。但是,无论如何它只会选择该类的一个版本。这是一个问题,因为我们每次都需要选择客户端特定版本,除了一个:在定义类的客户端特定版本时,我们将扩展该类的通用版本。所以类版本不能在加载时解析,两者都需要加载,除了一个之外,每次都会使用客户端特定的。
谢谢
【问题讨论】:
标签: php oop versioning