我有一个有很多面孔的 Web 应用程序,到目前为止,我已经通过创建主题来实现它。主题是一组用于公共(public)后端的 html、css 和图像。
事情是这样安排的:
code/
themes/theme1
themes/theme2
Web 应用程序的每个实例都有一个配置文件,说明应使用哪个主题。示例:
theme="theme1"
现在新的业务规则要求我对某些无法通过简单地更改 html/css/images 和需要更改后端来实现的主题进行更改。在某些情况下,这些更改需要应用于一组主题。
我想知道如何最好地将它放在磁盘上,以及如何在代码中处理它。我敢肯定其他人肯定反对这一点。
一个想法是:
code/common
code/theme1
code/theme2
themes/theme1
themes/theme2
然后让我的公共(public)代码设置 include_path
以便首先搜索 code/theme1
,然后搜索 code/common
。
然后如果我想专门为 theme2
说 LogoutPage
类,我可以简单地将页面从 code/common
复制到相同的code/theme2
下的路径,它将选择专用版本。
这个想法的一个问题是会有多个同名的类。虽然理论上它们永远不会包含在同一个执行中,但我无法扩展原始基类。
如果我要为基类起一个唯一的名字呢?例如Theme1LogoutPage 扩展了 LogoutPage
。我可以预见的一个问题是,当某些公共(public)代码(例如 Dispatcher)引用 LogoutPage
时。我可以向调度程序添加条件,但我想知道是否有更透明的方式来处理这个问题?
我能想到的另一个选择是为每个主题维护单独的分支,但我认为这可能需要大量工作。
最后要考虑的一件事是,功能可能起源于一个主题,然后需要合并到公共(public)代码库中。
非常感谢任何输入。如果有任何区别,那就是 LAMP 环境。
最佳答案
我没有具体的建议。但是,我强烈建议不要走捷径......使用你会觉得舒服的解决方案来添加第三个主题或明年改变一些东西。
重复是可维护性的敌人。
关于php - 管理一个应用的多个专业版本的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/245532/