Являются ли большинство фреймворков PHP на самом деле MVA вместо MVC? - PullRequest
14 голосов
/ 28 июля 2011

Многие PHP-фреймворки утверждают, что они реализуют шаблон проектирования MVC. Однако в их реализации модель и представление не знают друг друга, и каждое взаимодействие между ними должно осуществляться через контроллер. Как я читал в википедии, это MVA (Model View Adapter) вместо подхода шаблона проектирования MVC, потому что в MVC модель и представление взаимодействуют напрямую.

Утверждение этих структур неверно или я что-то упустил?

1 Ответ

7 голосов
/ 28 июля 2011

Фреймворки типа CodeIgniter - это MVA, да. Однако их утверждения не являются неправильными , поскольку MVA в основном представляет собой другой тип развертывания MVC. Посреднические контроллеры поражаются пользователями, которые обрабатывают бизнес-логику; они также вызывают модель, чтобы получить данные и подготовить представление.

Это не полностью отличается от строгого MVC, где Модель и Представление могут общаться друг с другом, поэтому сказать, что это "неправильно", немного жестко. Я бы сказал, что это другой взгляд на MVC.

EDIT:

См. CodeIgniter:

https://www.codeigniter.com/user_guide/overview/at_a_glance.html#

Модели не требуются , поскольку все может быть сделано в контроллере (очевидно, не рекомендуется). Обратите внимание, что CI (и большинство других сред) говорят, что они основаны на принципах MVC.

...