По сути, ваше определение верно:
Объекты модели содержат данные и определяют логику управления этими данными.Например, объект Student в базовом примере приложения является объектом модели.Он содержит данные, описывающие факты об объекте, такие как имя и фамилия учащегося, и имеет методы, которые могут получить доступ и изменить эти данные (получатели и установщики).Объекты модели не отображаются напрямую.Они часто можно использовать повторно, распространять, сохранять и переносить на различные платформы.
(из: http://best -practice-software-engineering.ifs.tuwien.ac.at / templates/mvc.html)
Итак, где разместить функцию getAllUsers()
, если вы не просто поместили ее в модель?
Ну, во-первых, когда мы говорим о термине «модель», мы не всегда имеем в виду модель.В MVC модель (M) содержит всю бизнес-логику .Это означает, что он содержит модель домена , которая является моделью, которую вы имеете в виду в этом вопросе.Но он также содержит уровень обслуживания .
Сервисный уровень обычно состоит из различных классов, которые предоставляют такие функциональные возможности, как, например, getAllUsers()
или getAllUsersWhichOwnAGreenTruck()
.
Вот отличная графика, демонстрирующая это:
(Источник: Шаблоны доменной модели и уровня сервиса в P из EAA )
В современных приложениях, например, созданных с помощью Laravel PHP Framework, выобычно генерируют базу данных, а также модель и отображение / связь базы данных автоматически (Пример Eloquent ORM: https://laravel.com/docs/5.8/eloquent). Но вы начинаете реализовывать сложную логику приложения на уровне сервиса.