Теперь, когда я прочитал огромное количество постов, статей, вопросов и ответов по ООП, MVC и шаблонам проектирования, у меня все еще остаются вопросы о том, как лучше всего построить то, что я хочу построить.
Мой маленький фреймворк построен в стиле MVC.Он использует smarty в качестве средства просмотра, и у меня есть класс, настроенный в качестве контроллера, который вызывается из URL.
Теперь, где я думаю, что я заблудился, это часть модели.Я мог бы смешивать модели и классы / объекты со многими (или маленькими).
В любом случае, пример.Когда цель состоит в том, чтобы получить список пользователей, которые находятся в моей базе данных:
, приложение вызывается, например, «пользователи / список». Затем контроллер запускает список функций, который открывает экземпляр класса «пользователь»."и просит этот класс получить список из таблицы.вернувшись к контроллеру, контроллер передает его зрителю, присваивая результирующий набор (массив) шаблону и устанавливая шаблон.Затем пользователь щелкает строку в таблице, которая скажет контроллеру, например, запустить «пользователь / редактировать», что в свою очередь создаст форму и заполнит ее пользовательскими данными для редактирования.
пока все хорошо.
сейчас у меня все это объединено в одном пользовательском классе - так что в этом классе есть функция create, getMeAListOfUsers, update и т. Д., А также такие свойства, как hairType и noseSize.Но при правильном дизайне я бы хотел отделить «пользователя» (со свойствами, такими как, имя пользователя, большой нос, вьющиеся волосы) от «getme a список пользователей», который бы больше походил на «класс менеджера пользователей».
Если бы я реализовал класс менеджера пользователей, как бы он тогда выглядел?должен ли он быть объектом (на самом деле не может сравнивать его с вещами реального мира) или это должен быть класс с просто открытыми функциями, чтобы он более или менее выглядел как набор функций.массив найденных записей (например: array([0]=>array("firstname"=>"dirk", "lastname"=>"diggler"))
или он должен возвращать массив объектов.
Все это все еще немного сбивает меня с толку, и мне интересно, может ли кто-нибудь дать мне немного понимания того, каклучше всего подойти к этому.