ps2007
Новичок
CMS и бизнес логика
Доброго времени суток, знатоки.
Пишу свою CMS общего назначения, вкратце она будет работать так:
- ФронтКонтроллер обрабатывает запрошенный URL и определяет, какой шаблон соответствует запрошенной странице,
а также извлекает параметры из URL (если они есть).
- Запускаются модули, которые необходимы для построения страницы (например для получения списка новостей).
Модули сами не генерируют HTML, а просто возвращают данные или выполняют определенные действия.
- После того, как отработали все модули полученные данные передаются шаблонизатору, который генерирует HTML.
Требования к CMS (по крайней мере хотелось так сделать):
- используется паттерн MVC;
- система должна быть достаточно гибкой (хотя это каждый понимает по своему);
- неограниченные возможности построения HTML;
- модуль ничего не знает о существовании других модулей;
- модуль ничего не знает, о том, как будут использоваться данные, которые он генерирует;
- шаблонизатор не знает, каким образом были приготовлены для него данные;
- для отображения страницы будут задействованы только необходимые модули, а не все установленные.
т.е. я хочу добиться разделения бизнес-логики и логики представления (пожалуйста не нужно флейма на эту тему).
Проблема в том, что бизнес-логика заключается не только в функционале модулей (может я ошибаюсь ?).
Например, если пользователь авторизован, то вывести какой-нибудь блок на странице,
если нет, то не показывать этот блок на странице.
Можно придумать более сложный пример, где в зависимости от результатов работы одного модуля
будет зависеть вызов(ы) других модулей.
Вопрос заключается в следующем:
Где и как организовать подобного рода логику ?
У меня есть два решения, но они меня не устраивают. Я специально не оглашаю их сейчас, сделаю это позже.
Для примера покажу, как это делается с использованием CMF:
вся бизнес-логика заключается в контроллере - происходит вызов моделей,
обработка полученных результатов (если нужно), любые сколь-угодно сложные действия
и затем передача результата виду.
Т.е. в этом случае CMF не ограничивает программиста в построении функционала.
В форуме поднимались похожие вопросы, но на свой вопрос я не нашел ответа.
Спасибо
Доброго времени суток, знатоки.
Пишу свою CMS общего назначения, вкратце она будет работать так:
- ФронтКонтроллер обрабатывает запрошенный URL и определяет, какой шаблон соответствует запрошенной странице,
а также извлекает параметры из URL (если они есть).
- Запускаются модули, которые необходимы для построения страницы (например для получения списка новостей).
Модули сами не генерируют HTML, а просто возвращают данные или выполняют определенные действия.
- После того, как отработали все модули полученные данные передаются шаблонизатору, который генерирует HTML.
Требования к CMS (по крайней мере хотелось так сделать):
- используется паттерн MVC;
- система должна быть достаточно гибкой (хотя это каждый понимает по своему);
- неограниченные возможности построения HTML;
- модуль ничего не знает о существовании других модулей;
- модуль ничего не знает, о том, как будут использоваться данные, которые он генерирует;
- шаблонизатор не знает, каким образом были приготовлены для него данные;
- для отображения страницы будут задействованы только необходимые модули, а не все установленные.
т.е. я хочу добиться разделения бизнес-логики и логики представления (пожалуйста не нужно флейма на эту тему).
Проблема в том, что бизнес-логика заключается не только в функционале модулей (может я ошибаюсь ?).
Например, если пользователь авторизован, то вывести какой-нибудь блок на странице,
если нет, то не показывать этот блок на странице.
Можно придумать более сложный пример, где в зависимости от результатов работы одного модуля
будет зависеть вызов(ы) других модулей.
Вопрос заключается в следующем:
Где и как организовать подобного рода логику ?
У меня есть два решения, но они меня не устраивают. Я специально не оглашаю их сейчас, сделаю это позже.
Для примера покажу, как это делается с использованием CMF:
вся бизнес-логика заключается в контроллере - происходит вызов моделей,
обработка полученных результатов (если нужно), любые сколь-угодно сложные действия
и затем передача результата виду.
Т.е. в этом случае CMF не ограничивает программиста в построении функционала.
В форуме поднимались похожие вопросы, но на свой вопрос я не нашел ответа.
Спасибо
