Как назвать слой между контроллером и моделью codeigniter MVC - PullRequest
2 голосов
/ 25 января 2011

Я хочу ограничить модель только вызовом в БД в то время как контроллер будет вызывать модель, библиотеки или помощников.

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

Следовательно, я хочу создать класс библиотеки и заставить контроллер строить данные представления перед тем, как выдавать их в представление. Это не совсем шаблон.

Дело в том, что я не знаю, как назвать это .. Любое хорошее предложение? Я имею в виду view_builder, ui_builder, ui_components?

Приветствия

Ответы [ 2 ]

3 голосов
/ 25 января 2011

Вот как я бы наложил слой на приложение:

  1. View
  2. Контроллер
  3. Услуги
  4. Настойчивость

Просмотр возможен на настольном компьютере, в браузере или на мобильном устройстве.

Контроллер тесно связан с просмотром. Он отвечает за проверку и привязку ввода к объектам модели, вызов сервисов для выполнения сценариев использования и маршрутизацию ответа на следующее представление.

Сервисы выполняют сценарии использования. Они знают о единицах работы, собственных транзакциях и управляют соединениями с такими ресурсами, как базы данных. Они работают с модельными объектами, другими сервисами и объектами персистентности. Они являются объектами на основе интерфейса, но могут быть удалены или представлены в виде веб-служб - RPC-XML, SOAP, REST или других.

Постоянство - это еще один интерфейсный объект. Реализация может быть реляционной или NoSQL; важно то, что интерфейс выражает операции CRUD для объектов модели. Если вы используете дженерики, можно написать один интерфейс, который будет работать для всех.

Я бы не позволил модельным объектам сохраняться. Я знаю об уничижительной «анемичной доменной модели», но думаю, что более захватывающее поведение должно быть сосредоточено вокруг бизнес-целей, а не операций CRUD.

0 голосов
/ 25 января 2011

Хорошая настройка. Я также иногда использую библиотеки CI для обработки перегибов в массиве возвращаемых данных перед передачей его в представление. Я также иногда просто использую модель.

И хорошо, что вы думаете об именах - я думаю, что все, что вы упомянули, в порядке; Вы также можете подумать о том, чтобы назвать свою библиотеку чем-то вроде data_structure или array_to_object - или что-то более конкретное для вашей проблемы, например friend_map или tag_cloud.

Мой совет: выберите имя, а затем не бойтесь менять его, если появится что-то более описательное или функция вашей библиотеки превратится во что-то другое. Найти + заменить - твой друг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...