ZN
Новичок
Вопрос по реализации MVC
Рассмотрим простой пример: есть пользователи (представленные классом user, в котором только поля и set-get методы - это Model, причём Model жестко замаплен с базой, то есть класс имеет такие поля, какие имеет таблица в базе), есть интсрументы для работы с ними (представленные классом userhandler, методы которго принимают экземпляры user и работают с ними - это Controller), View значения не имеет, можно считать, что это Smarty.
Система модульная, то есть пользователи - это базовый функционал, а добавить можно много чего. Так вот положим я добавляю модуль, который добавляет пользователям некую новую характиристику, скажем "настроение", и позволяет её изменять. Пользователи хранятся в одной таблице. При добавлении нового модуля создаётся простая таблица с двумя полями - userid и mood, то есть в ней хранятся настроения пользователей.
Теперь пусть мне надо вывести список пользователей с их настроениями. Можно выбрать одним запросом всех пользователей, потом другим(и) запросом их настроения. С одной стороный очевидно это можно сделать одним запросом. Но проблема в том, что метод Controller'a, который достаёт из базы, возвращает объекты класса user, то есть даже если я выберу сразу пользователей со статусами, то статусов всё равно не увижу, так как у класса user нет такого поля.
Можно было бы завести под настроения отдельный класс с обработчиком, доставать всё одним запросом, а потом создавать объект пользователя и объект настроения, заполнять их и возвращать. Но с другой стороны заводить новый класс, который будет представлять единственную характеристику как-то не хочется. Что посоветуете?
Просьба не обсуждать плюсы и минусы модели MVC, модульную организацию и шаблонизатор Smarty.
Рассмотрим простой пример: есть пользователи (представленные классом user, в котором только поля и set-get методы - это Model, причём Model жестко замаплен с базой, то есть класс имеет такие поля, какие имеет таблица в базе), есть интсрументы для работы с ними (представленные классом userhandler, методы которго принимают экземпляры user и работают с ними - это Controller), View значения не имеет, можно считать, что это Smarty.
Система модульная, то есть пользователи - это базовый функционал, а добавить можно много чего. Так вот положим я добавляю модуль, который добавляет пользователям некую новую характиристику, скажем "настроение", и позволяет её изменять. Пользователи хранятся в одной таблице. При добавлении нового модуля создаётся простая таблица с двумя полями - userid и mood, то есть в ней хранятся настроения пользователей.
Теперь пусть мне надо вывести список пользователей с их настроениями. Можно выбрать одним запросом всех пользователей, потом другим(и) запросом их настроения. С одной стороный очевидно это можно сделать одним запросом. Но проблема в том, что метод Controller'a, который достаёт из базы, возвращает объекты класса user, то есть даже если я выберу сразу пользователей со статусами, то статусов всё равно не увижу, так как у класса user нет такого поля.
Можно было бы завести под настроения отдельный класс с обработчиком, доставать всё одним запросом, а потом создавать объект пользователя и объект настроения, заполнять их и возвращать. Но с другой стороны заводить новый класс, который будет представлять единственную характеристику как-то не хочется. Что посоветуете?
Просьба не обсуждать плюсы и минусы модели MVC, модульную организацию и шаблонизатор Smarty.