2011-01-25 2 views
2

Я хочу ограничить модель вызовом только db , а контроллер вызовет модель, библиотеки или помощники.Как назвать слой между контроллером и Model codeigniter MVC

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

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

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

Приветствия

ответ

3

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

  1. Вид
  2. Контроллер
  3. Услуги
  4. Постоянство

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

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

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

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

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

0

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

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

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

Смежные вопросы