MVC PHP — Модель User и (или) UserList?

Прочитал много различной инфы про MVC применительно к вебу. Но осталось непонятным.

Например, сайт работает с пользователями. Получается нужны методы получения списка всех пользователей, добавления нового, удаления. Вырисовывается модель UserList.

С другой стороны, если мы ищем конкретного пользователя по ID для отображения профиля. Вызываем метод модели UserList - getUserById. И, на мой взгляд, логичным было бы вернуть объект класса User, чтобы сразу получить доступ и к имени, и к паролю и тд. То есть еще одна модель User? Или пусть контроллер разбирает ответ БД, чтобы вытащить данные пользователя?
  • Вопрос задан
  • 3130 просмотров
Решения вопроса 1
Есть подход ORM, где сущность отделена от репозитория.
Есть подход ActiveRecord, где сущность и репозиторий, для простоты, это один класс.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
arutyunov
@arutyunov
Mooza.ru — Делаем сайты
У вас есть модель User, и допустим класс коллекции UserList - который возвращает массив моделей user, либо одну конкретную модель по id и т.д.

Посмотрите пример в Yii: yiiframework.ru/doc/cookbook/ru/model.dao
Ответ написан
Комментировать
@Allineer
Вы оперируете не списком пользователей, а именно пользователем.

Следовательно:
User->getUserById
User->name = blablabla
User->Save
Ответ написан
nazarpc
@nazarpc
Open Source enthusiast
Если оперируете пользователями атомарно - User, если же выполняете операции сразу над группой пользователей, и эта группа является одним целым - тогда можно подумать о UserList. Скорее всего у вас просто User, поиск к групповой операции не относится, список полученных пользователем одним целым не назовешь.
Ответ написан
Комментировать
@gro
Это не имеет отношение ни к MVC ни к вебу.

С абстрактной точки зрения правильнее, конечно, для каждой модели разделять понятия Item (отдельная сущность) и Container (совокупность этих сущностей, предназначенная для получения отдельных элементов).

Впрочем многие ORM мешают оба этих понятия в один класс.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы