Нужно ли создавать модель для каждого контроллера?Какая практика лучше? - PullRequest
2 голосов
/ 02 сентября 2011

Допустим, у меня есть модель Retrieve.php, где у меня есть класс с именем Retrieve, и он извлекает сообщения из базы данных. Затем у меня есть контроллер в Index.php, где я загружаю эту модель, извлекаю сообщения и передаю ее для просмотра.

А теперь у меня есть еще одна страница, где я должен показать эти сообщения. Допустим, Sidebar.php или что-то. И теперь я снова должен получить эти сообщения. Итак, могу ли я загрузить Retrieve.php еще раз или мне нужно создать еще одну модель для Sidebar.php, которая расширяет Retrieve.php? Какая практика лучше?

И, вообще, нужно ли каждому контроллеру создавать новую модель в хорошем PHP MVC? Если да, возможно, контроллер и модель должны называться одинаково? Еще советы / комментарии?

Спасибо.

Ответы [ 4 ]

5 голосов
/ 02 сентября 2011

В общем, модель должна представлять бизнес-сущность, а не процесс.Т.е. это должно быть существительное, а не глагол.В вашем случае вам нужна модель для поста, а методы этой модели будут выполнять «то, что вы делаете с / для поста».Затем контроллер описывает, какие действия происходят для страницы.В этом случае контроллер страницы / post извлекает сообщение и передает его представлению для рендеринга.

1 голос
/ 02 сентября 2011

Создавайте только те модели, которые вам нужны. Помните, весь смысл MVC состоит в том, что модели отделены от представлений. Это означает, что совершенно нормально повторно использовать все, что вам нужно для выполнения работы. Если у вас есть несколько представлений, которым требуется доступ к одним и тем же данным, просто используйте одну и ту же модель. Просто обязательно дайте моделям описательные названия, чтобы не было путаницы относительно того, что они должны представлять.

0 голосов
/ 02 сентября 2011

Нет -

Модель должна быть тем, чем управляет ваше приложение - поэтому вместо Retrieve ваш класс модели должен быть, вероятно, Post (и, возможно, у вас есть другие классы Model для существительных в вашем домене - Thread, Автор ...)

Контроллеры должны получить доступ к модельным классам, которые им необходимы для работы;один класс модели может использоваться несколькими контроллерами, а один контроллер может использовать несколько классов моделей.

0 голосов
/ 02 сентября 2011

У вас должен быть только один класс Model для каждой структуры данных, которую представляет эта модель.Поэтому, если у вас есть 5 контроллеров, каждый из которых имеет доступ к одной и той же модели, у вас все равно должен быть только один класс модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...