架构:多个网站。一个代码库。自定义代码

时间:2011-08-17 13:56:06

标签: php architecture

好。我目前正在构建一个php应用程序(平台),它将被多次部署,只有不同的配置。该应用程序由后端和前端组成。通过后端,我们可以配置哪些模块处于活动状态,设置是什么以及平台的外观。

我们希望客户开始在他们的平台上询问特定功能。这意味着平台将与其他平台不同。但是,我们维护一个代码库。

解决这个问题的最佳方法是什么?由于我们不断修复错误并开发新功能,因此应该很容易处理所有平台。我们有一个脚本,用于将平台更新部署到我们所有平台。

我们是否应该将所有功能转换为插件,以便每个平台都可以手动更新?因此,如果客户想要与原始插件不同的东西,我们复制插件并创建自己的客户插件?但是,如果我们决定更新插件,代码是否易于维护?

或者我们应该在代码中为每个客户编写例外吗?

我们是否应该使用自定义代码覆盖每个平台的基本文件的单独文件?

最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

最大的诀窍是平衡客户的不同需求,而不会遇到无法维护的大规模复杂系统。以下是您应该考虑的几种方法:

  • 依赖性倒置:关于这个主题的材料很多,基本上它是构建系统的一种方式,因此它内部的不同部分依赖于概念而不是具体的实现。这将允许您为不同的客户交换这些实现。它可用于从深度业务逻辑和算法到数据提供者到UI小部件的所有内容。我不确定最好的地方是从DI开始(我来自.Net背景而不是PHP),所以here's the Wikipedia entry作为开头。
  • 确定用户想要改变的各种事物,并将这些事物分离成可以使用DI或其他一些实用方法轻松交换的事物。这样做非常努力,不要在框架代码库中引入变体(基本上“托管”可交换位的核心。
  • 尽可能保持依赖树的清洁。
  • 从PoC / Prototype开始。构建框架非常困难。你的第一次尝试可能会正常,但你的第二次和第三次尝试会更好;经验非常重要。
  • 在开发期间和部署之后,努力使系统易于测试。对于所有移动部件,您需要良好的诊断功能,以帮助您隔离问题并帮助集成。

编辑:最后,如果您还没有意识到它们,那么您可以使用现有的PHP框架,或者只是从中借用方法 - PHP开源社区相当强大。查看Zend Framework。