У меня есть веб-приложение, у которого много лиц, и до сих пор я реализовал это путем создания тем. Тема представляет собой набор html, css и изображений, которые будут использоваться с общим задним концом.Рекомендации по управлению несколькими специализированными версиями одного приложения
Вещи раскладывают так:
code/
themes/theme1
themes/theme2
И каждый экземпляр веб-приложения имеет конфигурационный файл, который гласит, какие темы следует использовать. Пример:
theme="theme1"
Теперь новые правила бизнеса просят меня, чтобы внести изменения в некоторые темы, которые не могут быть достигнуты за счет просто изменить HTML/CSS/изображений и требуют изменения бэкенд. В некоторых случаях эти изменения должны применяться к группе тем.
Мне интересно, как лучше всего выложить это на диск, а также как обрабатывать его в коде. Я уверен, что кто-то еще должен был противостоять этому.
Одна идея состоит в том, чтобы:
code/common
code/theme1
code/theme2
themes/theme1
themes/theme2
Тогда есть мой общий код установить include_path
таким образом, что code/theme1
ищется первый, затем code/common
.
Тогда, если я хочу специализироваться сказать LogoutPage
класс для theme2
, я могу просто скопировать страницу из code/common
на тот же путь под code/theme2
и подберут специализированную версию.
Одна из проблем с этой идеей заключается в том, что будет несколько классов с тем же именем. Хотя в теории они никогда не будут включены в одно и то же исполнение, я бы не смог расширить исходный базовый класс.
Так что, если бы я должен был создать уникальное имя для базового класса? например Theme1LogoutPage extends LogoutPage
. Одна из проблем, которую я могу предвидеть, - это когда некоторый общий код (скажем, диспетчер) ссылается на LogoutPage
. Я могу добавить условия для диспетчера, но мне интересно, есть ли более прозрачный способ справиться с этим?
Другой вариант, о котором я могу думать, состоит в том, чтобы поддерживать отдельные ветви для каждой темы, но я думаю, что это может быть большой работой.
Последнее, что нужно учитывать, состоит в том, что функции могут возникать в одной теме, а затем требуют объединения в общую кодовую базу.
Любой вход очень ценится. Если это имеет значение, это среда LAMP.
Зачем вы меняете вопрос? Там миллион и один опрос о том, какой тип собачьего корма вы кормите своей собакой. Это правильный вопрос дизайна. Почему бы просто не игнорировать его, если это не относится к вам? – 2008-10-29 02:08:44