7 задание по курсу "Информатика и программирование" на весенний семестр 2013-2014 года
Контроллер
Данный класс должен быть ответственен за обработку запроса браузера. Что для этого требуется:
- Класс контроллер должен иметь как минимум 1 публичный метод processRequest
- В файле, к которому непосредственно идет обращение (зачастую index.php) создается экземпляр класса Controller и сразу вызывается метод processRequest
- В этом методе проверяется наличие GET-параметров, в зависимости от значений которых происходит нужное действие.
- Внутри контроллера должны создаваться сущности кэширующего провайдера (подробнее ниже).
GET-параметры
С запросом передается 1 параметр type. Возможные значения:
- Composition
- Inheritance
- Нет значения (или нет параметра)
Кэш-провайдер
Кэш провайдер выполняет одну единственную роль - кэширует данные, возвращаемые от относящегося к нему провайдера сущностей. Отношение может быть выражено двумя способами:
- Композиция. Когда в конструктор кэширующего провайдера передается экземпляр провайдера сущности.
- Наследование. Кэширующий провайдер расширяет класс провайдера сущности.
Любые данные из кэширующего провайдера сперва берутся из провайдера сущности, а, затем, кэшируется (если это целесообразно), либо напрямую берутся из кэша. Время жизни кэша - на ваше усмотрение.
Итог
Схема работы вашего задания такова: контроллер обрабатывает приходящий параметр и принимает решение:
- Если параметра нет или его значение отлично от заявленных двух (см. выше), то в качестве провайдера сущностей используется обычный класс провайдера сущностей.
- Если параметр Composition, то в качестве провайдера сущностей берем кэширующий провйдер с отношением "Композиция".
- Если параметр Inheritance, то в качестве провайдера сущностей берем кэширующий провайдер с отношением "Наследование".
Затем, в контроллере, происходит вызов всех трех методов полученного провайдера. Полученные данные агрегируются в массиве, а, затем, выводятся в шаблоне. Вывод - на ваше усмотрение. Главное, чтобы было видно, какие данные каким методом получены.
Примечание.
Кэширующий провайдер и провайдер сущности должны имплементировать 1 интерфейс (например, IEntityProvider), в котором будут объявлены 2 метода получения данных: getEntity и getEntities
Для сохранения в кэш используйте функцию serialize. Для восстановления данных - unserialize
Комментариев нет:
Отправить комментарий