Я нахожусь в процессе расширения и улучшения веб-сайта, который имеет довольно много структурных проблем. Похоже, что разработчики до меня слышали о MVC, но не понимали идеи абстракции или модульности. Таким образом, «структура» MVC - это а) сделанное на заказ б) сломанное в) исправление и г) использование нескольких одновременно. Я намерен это исправить.
Это не первый раз, когда я перестраиваю фреймворк сайта, BTW, но это первый раз, когда мне приходится исправлять фреймворк MVC. Тем не менее, я сталкиваюсь с некоторыми пропущенными пробелами в знаниях MVC здесь, на SO.
Во-первых, насколько тесно программисты связывают свою базу данных SQL со своими моделями. Это не имеет смысла для меня: у программистов обычно есть модель, которая следит за абстракцией данных? (Для меня это немного лучше, чем помещать SQL в сырой PHP-код.) Или обычно используется слой доступа к данным "SQL"? По своему опыту я знаю, что последнее означает, что вызывающему коду не нужно беспокоиться о том, где находятся данные, или как их получить, или как их написать: API это обрабатывает.
А как же модели? Они предназначены для повторного использования на разных страницах? Должны ли они заботиться о том, где именно хранятся данные? Разве они не должны больше интересоваться обработкой логики между выборкой данных и показом данных (например, превращение идентификатора группы контакта в отображаемое имя)? И сохранение данных и запись данных (например, выяснение, как превратить значения $ _POST в сохраняемые данные)?
Возможно, модель MVC действительно будет DMVC - Data-Model-View-Controller.
Наконец, хотя это с точки зрения PHP, насколько хорошо эти концепции переводятся на сайт JSP?