Немного предыстории по теме.
Для начала, вы должны понимать, что невозможно написать классический MVC на PHP.В классическом паттерне View отслеживает уровень модели на предмет любых изменений и запрашивает новые данные при обнаружении таких изменений.Что невозможно, когда View попадает в чей-то телефон на другой стороне планеты или на МКС в этом отношении.
Ближайшая классическая структура, которую вы можете получить, - MVC Model2 (некоторые называют это "Web MVC").В этом шаблоне представление взаимодействует со слоем модели через services .Эти сервисы, в свою очередь, охватывают реализацию модели предметной области (как определено в этой книге ) и абстракции постоянства.И View запрашивает все данные, которые ему нужны, от указанных сервисов.
Другими популярными вариантами исходной темы MVC являются MVVM и MVP (существует также шаблон HMVC, который не имеет прямого отношения к другим и является вариантом PAC.).Как вы могли заметить, M и V остаются во всем, но «управляющая структура» имеет разные названия.Это потому, что каждый из них делает разные вещи.
Примечание: Обычно, когда вы читаете о какой-то платформе, которая использует «MVC» для маркетинговых целей, им нечегоделать с этим шаблоном.Вместо этого они просто Ruby On Rails клонов различного качества (или их отсутствие).
Bact на оригинальный вопрос ..
КороткийОтвет будет таким: НЕТ .
Вы должны иметь в виду, что PoEAA был выпущен в 2002 году. Ситуация немного изменилась.Теперь HTTP-запрос обычно обрабатывается Front Controller , который затем предоставляет параметры для создания Controller
.
Для Controller
все еще характерно создавать экземпляры структур из Model layer
, но View
может быть создан либо внутри контроллера, либо на основе объекта Response
, который может быть возвращен (или просто изменен)) на Controller
.
Кроме того, хотя в общем случае между View
и Controller
все еще существует отношение 1: 1, будут ситуации, когда тот же самый Controller
вызывается для генерации JSON,вместо HTML.Это приведет к тому, что контроллер выберет другое представление, поскольку в случае JSON-ориентированного View
он будет пытаться накопить некоторые конкретные данные из Model layer
и создать одну из нескольких возможных структур данных.Который затем кодирует и представляет пользователю (который в этом случае, скорее всего, будет объектом XRH в браузере).
И эти отклонения охватывают только Model2 и частично MVP.
Обновление v2:
В контроллере веб-приложения основной задачей является передача данных из запроса (предпочтительно абстрагированных) на уровень модели и, таким образом, - изменение состояния модели.Контроллер также может изменять состояние текущего экземпляра представления.Обычно это происходит, когда вы хотите изменить формат вывода.
Создание структур слоя представления и модели может (и обычно - должно) располагаться вне самого контроллера.
Также обратите внимание, что это не то, что делают шаблоны MVP и MVVM, которые стремятся собирать данные со слоя модели в «контроллере», манипулировать / реструктурировать эти данные и только затем передавать их в View.