Я работаю с PHP и понимаю, как работает MVC. Есть одна вещь, в которой я не уверен в MVC. Является ли хорошей практикой создание объекта Model непосредственно в представлении, не пропуская его через контроллер, поскольку иногда нет необходимости обрабатывать модель в контроллере? Есть ли недостаток в этом?
Это против концепции MVC
Не пытайтесь сломать архитектуру
модель — Самый низкий уровень шаблона, который отвечает за ведение данных.
Посмотреть — Это отвечает за отображение всех или части данных для пользователя.
контроллер — Программный код, который контролирует взаимодействие между моделью и представлением.
Ссылка Вот
Ваш view
отображает только результаты, поэтому new Model()
должен перейти к контроллеру и позже будет передан для просмотра.
Да, ваш взгляд не должен полагаться на то, что модель останется прежней.
Скажем, например, вы используете модель, которая имеет ->forename
а также ->surname
атрибутов. По вашему мнению, вы просто называете это напрямую.
Затем вы решите позже, что вы собираетесь добавить мутаторы и методы доступа (геттеры и сеттеры) к вашей модели, поэтому вы будете использовать ->getForename()
а также ->getSurname()
потому что вы хотите сделать некоторую предварительную обработку для них, чтобы убедиться, что капитализация правильная
Теперь вам нужно пройти через все ваши контроллеры а также просмотров, потому что использование должно измениться.
Если вместо этого вы просто выполнили всю обработку модели в вашем контроллере, а затем передали стандартизированный набор данных в представление, вам нужно будет только обновить свои контроллеры.
Представление не должно ожидать ничего от Модели, оно должно просто требовать, чтобы оно получало определенные данные от Контроллера.
Вы можете сделать что-то вроде этого в вашем контроллере:
$view = new View('my.file', [
'user' => [
'forename' => $user->forename,
'surname' => $user->surname,
],
] );
это все еще дает вам $user['forename']
использовать в вашем представлении, но теперь формат этих данных поступает из контроллера, а не из модели.