Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Давайте поговорим про архитектуру фреймворка
 
 автор: SHAman   (13.09.2008 в 22:27)   письмо автору
 
 

Собираюсь соорудить свой небольшой фреймворк, чтобы на его основе потом клепать что-то.

Что придумал сейчас:
1) есть класс фреймворка, который загружает необходимые модули в нужном порядке. Применяется делегирование. То есть, работающие модули будут включены в основной модуль фреймворка и он будет вызывать их и получать от них ответы явно.

2) необходимые модули указываются в конфиге. Там же указывается порядок их загрузки. Там же указываются события, при котрых нужно вызывать тот или иной модуль.

3) обработка запроса делится на события:
создание объекта фреймворка,
установка объекта фреймворка и загрузка с установкой всех необходимых модулей,
парсинг запроса,
подготовка ajax-ответа
подготовка простого ответа
выдача

Для каждого модуля указывается в какой момент он должен быть вызван. Например, если модуль должен обрабатывать аякс-запросы и просто запросы (допустим, модуль навигации, который должен вывести начальное дерево сайта и поддерживать аякс-догрузку элементов), он вызывается при формировании аякс-ответа и просто ответа. Разумеется, если будет сформирован какой-то аякс-ответ, то простой ответ формироваться не будет и будет происходить выдача.

Собственно, все работает. Если смотреть с точки зрения MVC, у меня получается один контроллер - это главный класс, который загружает все остальные и парсит запрос.

А вот с моделью и прдеставлениями немного нестандартно. Моделей у меня получается много. По количеству модулей.

Внимание, вопрос. Как при такой архитектуре максимально удобно организовать представление? Стоит ли делать один класс представления, или может быть, сделать много маленьких классов - по одному на модель? Честно говоря, склоняюсь ко второй возможности. Трудность представления заключается в том, что непонятно как придут данные от модели. Это может быть просто скаляр, массив любой вложенности и так далее. В общем, совершенно разные данные. Как организовать их красивую обработку и выдачу?

Учитываем, что, например, при формировании одной страницы, будут задействованы разные модули. То есть, один сделает мне меню, другой - контент, третий - горячие предложения, четвертый - голую тетку в шапке сайта. Все эти выдачи нужно организовать, запихнуть в одну страницу и выдать.

При этом, нужно сохранить возможность вывода предупреждения. Например, тетки сегодня на месте нет и вообще, у нее болит голова. Поэтому на этом месте нужно написать "извините, у тетки болит голова. Сегодня она раздеваться не будет."

Есть идеи-предложения?

  Ответить  
 
 автор: TXC   (14.09.2008 в 00:56)   письмо автору
 
   для: SHAman   (13.09.2008 в 22:27)
 

Взять запасную тетку-сменщицу.

  Ответить  
 
 автор: SHAman   (14.09.2008 в 18:00)   письмо автору
 
   для: TXC   (14.09.2008 в 00:56)
 

Типа шутка?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования