Это более или менее ориентированная на фреймворк версия прошлого вопроса о переполнении стека , в которой рассказывается о том, как в большинстве вводных материалов по приложениям MVC присутствует тесная связь между моделями, представлениями и контроллерами.Например, у вас будет таблица User, которая модифицируется контроллером пользователя, который, в свою очередь, передает отфильтрованные данные в представление пользователя.У меня сложилось впечатление, что многие MVC-фреймворки, как правило, также отражают этот паттерн.Это все хорошо и хорошо, но это никогда не приводит меня к чему-то кроме создания и отображения монотонных списков вещей в форме HTML.
Среда MVC, на которую мы сейчас обращаем внимание, - Lithium , который кажется довольно интересным примером использования умных техник кодирования PHP5.3.С одной стороны, Lithium имеет класс Model
, который предлагает объекты-оболочки вокруг отдельных таблиц и абстрагирует некоторые простые запросы.С другой стороны, у него есть изящное соглашение о маршрутизации URL-адресов к вызовам методов на объектах контроллера, которые затем визуализируются для отображения шаблонов.
Но посреди этого я теряюсь в том, гдеПоместите всю интересную логику, которая связывает данные в таблице A с данными в таблицах от B до Z. Или, по крайней мере, я не уверен, где разместить такую логику таким образом, чтобы это соответствовало дизайну структуры.Насколько я понимаю, Model
абстракция Lithium не делает ничего больше, чем просто исключает некоторые шаблоны вставки / обновления / удаления на уровне строк, а архитектура контроллера / представления в основном основана на пользовательском интерфейсе.Я не хотел бы помещать много бизнес-логики в тот же класс Controller
, который получает маршрутизированные вызовы функций от запросов URL.
Мой инстинкт был бы заполнить пробел с помощью моего собственного кодаэто существует более или менее полностью вне рамок.Я не уверен, стоит ли ожидать чего-то большего, но, учитывая, насколько жестко структурировано все остальное в Lithium, это выглядит как-то неудовлетворительно, как если бы я мог просто свернуть свой собственный кодовый шаблон сокращения без лишних затрат на поиск источника информации.большой каркас.
Что мне здесь не хватает?Есть ли рекомендуемая архитектура или философия для использования этого типа фреймворка?