【发布时间】:2008-10-29 01:45:25
【问题描述】:
我有一个有很多面孔的 Web 应用程序,到目前为止,我已经通过创建主题来实现它。主题是一组用于通用后端的 html、css 和图像。
事情是这样布置的:
code/
themes/theme1
themes/theme2
Web 应用程序的每个实例都有一个配置文件,说明应该使用哪个主题。示例:
theme="theme1"
现在新的业务规则要求我对某些主题进行更改,这些更改无法通过简单地更改 html/css/images 来实现,并且需要更改后端。在某些情况下,这些更改需要应用于一组主题。
我想知道如何最好地将它放在磁盘上,以及如何在代码中处理它。我敢肯定其他人一定遇到过这个问题。
一个想法是:
code/common
code/theme1
code/theme2
themes/theme1
themes/theme2
然后让我的通用代码设置include_path,以便首先搜索code/theme1,然后搜索code/common。
然后如果我想专门说theme2 的LogoutPage 类,我可以简单地将页面从code/common 复制到code/theme2 下的同一路径,它会选择专门的版本。
这个想法的一个问题是会有多个具有相同名称的类。虽然理论上它们永远不会包含在同一个执行中,但我无法扩展原始基类。
那么,如果我要为基类起一个唯一的名称呢?例如Theme1LogoutPage extends LogoutPage。我可以预见的一个问题是当一些通用代码(比如调度程序)引用LogoutPage 时。我可以向调度程序添加条件,但我想知道是否有更透明的方式来处理这个问题?
我能想到的另一个选择是为每个主题维护单独的分支,但我认为这可能需要很多工作。
最后要考虑的一点是,功能可能源自一个主题,然后需要合并到通用代码库中。
非常感谢任何输入。如果有什么不同,那就是 LAMP 环境。
【问题讨论】:
-
你为什么要否决我的问题?这里有一百万零一个关于你喂你的狗吃什么类型的狗粮的民意调查。这是一个有效的设计问题。如果它不适用于您,为什么不直接忽略它?
标签: php oop inheritance directory-structure