php - 管理一个应用的多个专业版本的最佳实践

标签 php oop inheritance directory-structure

我有一个有很多面孔的 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

然后如果我想专门为 theme2LogoutPage 类,我可以简单地将页面从 code/common 复制到相同的code/theme2 下的路径,它将选择专用版本。

这个想法的一个问题是会有多个同名的类。虽然理论上它们永远不会包含在同一个执行中,但我无法扩展原始基类。

如果我要为基类起一个唯一的名字呢?例如Theme1LogoutPage 扩展了 LogoutPage。我可以预见的一个问题是,当某些公共(public)代码(例如 Dispatcher)引用 LogoutPage 时。我可以向调度程序添加条件,但我想知道是否有更透明的方式来处理这个问题?

我能想到的另一个选择是为每个主题维护单独的分支,但我认为这可能需要大量工作。

最后要考虑的一件事是,功能可能起源于一个主题,然后需要合并到公共(public)代码库中。

非常感谢任何输入。如果有任何区别,那就是 LAMP 环境。

最佳答案

我没有具体的建议。但是,我强烈建议不要走捷径......使用你会觉得舒服的解决方案来添加第三个主题或明年改变一些东西。
重复是可维护性的敌人。

关于php - 管理一个应用的多个专业版本的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/245532/

相关文章:

php - MySQL:每个日期选择一条数据

php - 如何使用正则表达式验证 Twitter 用户名

java - 如何在 Java 中扩展不可变类型

Python:如何正确地重新分配属性以与父类函数一起使用

c++ - 为什么我必须通过 this 指针访问模板基类成员?

php - mysql将字符串转换为时间格式wheb从数据库查询

php - 显示奇数和偶数数据

java - OOP 的可重用性和可维护性

java - 使用父类(super class)初始化子类对象和反之有什么区别?

Java非泛型方法隐藏具有交集类型的泛型方法