Есть около миллиарда "PHP-фреймворков". И большинство из них выставляют себя в соответствии с моделью MVC. Несмотря на то, что можно преодолеть стиль кодирования osCommerce (логика обработки, сильно смешанная с SQL и HTML), безусловно, существуют более простые и легкие в использовании подходы для получения поддерживаемого дизайна приложения.
Первоначальная концепция MVC была ориентирована на приложения с графическим интерфейсом. И для Gtk / Python представляется целесообразным следовать ему соответствующим образом. Но веб-приложения PHP не работают с живыми представлениями (элементами GUI) и постоянным временем выполнения контроллера. Это, безусловно, неправильно, если он просто описывает используемый код + группирование каталогов или именование классов.
«MVC», кажется, используется как модное слово для фреймворков PHP. И я на самом деле видел, как одна или две зрелые PHP-фреймворки признают это, но в любом случае переопределяют фразу, чтобы она соответствовала interna.
Так это вообще змеиное масло? Почему не используется лучшая терминология и более разумная концепция для поддержки поддерживаемого PHP?
Некоторые подробные рассуждения
Почему я подозреваю, что реализации PHP не следуют настоящему шаблону MVC:
Модели : теоретически, модели должны быть толстыми и содержать бизнес-логику, а контроллеры должны быть тонкими обработчиками (input-> output). В действительности фреймворки PHP поддерживают мелкие модели. CI и Symfony, например, приравнивают Model == ORM. Даже HTTP-ввод обрабатывается контроллером, а не моделью.
Просмотры : обходные пути со скидкой AJAX, на веб-страницах не может быть просмотров. Фреймворки PHP по-прежнему выкачивают страницы. Интерфейс по-прежнему эффективно следует обычной модели HTTP, и нет никаких преимуществ перед приложениями, отличными от MVC. (И, наконец, ни одна из широко распространенных фреймворков php фактически не может выводить в представления GUI вместо HTML. Я видел библиотеку PHP, которая может работать с Gtk / Console / Web, но фреймворки этого не делают.)
Контролер : я не уверен. Контроллеры, вероятно, не должны быть долговременными и постоянно активными в модели MVC. В контексте PHP среды они, однако, в основном обработчики запросов. Не совсем то, о чем можно спорить, но это звучит слегка модно.
Будут ли лучшие дескрипторы? Я видел такие сокращения, как PMVC или HMVC. Хотя описания там становятся более двусмысленными, возможно, они описали бы текущие веб-фреймворки менее наглядно?