Я изучал парадигму Model-View-Controller ("MVC"), но я совершенно сбит с толку, поскольку некоторые учебные пособия противоречат другим учебным пособиям.
Мой текущее понимание процесса выглядит примерно так:
Здесь исходные данные собираются из некоторого источника хранения, такого как база данных или файл XML. Модель служит в качестве уровня абстракции, переводя запрос контроллера на конкретные данные (например) в запрос SQL и переводит результаты запроса в стандартный формат, такой как объект данных.
Например, в сценарии / browse / all, указанном выше:
Это настоящая рабочая лошадка приложения. В дополнение к ретрансляции сообщений назад и вперед в Model и View контроллер также отвечает за такие вещи, как Авторизация и application / "business "логика Редактировать: в ответ бизнес-логика принадлежит модели.
В текущем примере Контроллер будет нести ответственность за:
Например,
<html>
<head>
<title>
<?php $question->getTitle() ?>
</title>
</head>
<body>
<h1> <?php $question->getQuestionText(); ?> </h1>
<h2> Answers: </h2>
<div class="answerList">
<?php formatAnswerList($question->getAnswers()); ?>
</div>
</body>
</html>
formatAnswerList ()
, описанный выше, будет принимать массив ответов, взятых из контроллера , и проходить по ним, вызывая что-то вроде , включая $ markupPath. "
, который был бы небольшим шаблоном всего лишь контейнера ответов. Я думаю, что в этом описании слишком много внимания уделяется контроллеру и недостаточно - модели. В идеале модель - это место, где находится бизнес-логика. Контроллер на самом деле просто интерфейс для пользователя сайта, маршрутизирующий управление туда, куда ему нужно. Посмотрите предыдущую дискуссию на эту тему:
Понимание MVC: Что такое концепция "толстых" моделей, "тощих" контроллеров?
По сути, у вас все в правильном месте.
В вашем примере вы определяете класс Question - который будет известен как ViewModel, просто контейнер для всех данных, которые будут использоваться в представлении/получаться из представления.
В некоторых случаях я видел, что ViewModel упускается из виду и модель передается в представление - это смутило меня, когда я впервые просматривал учебники, и мне не нравится упускать ViewModel, я думаю, что это запутывает ситуацию.