Я работал над простым калькулятором платежей, который у меня работал правильно через интерфейс html и сервер php. HTML передает пользовательские данные как переменные в PHP через вызовы AJAX, а PHP возвращает результат на страницу html. Теперь, когда он функционирует должным образом, я пытаюсь понять, как именно преобразовать это в шаблон MVC. Насколько я понимаю, html - это компонент представления, PHP, который содержит всю логику для расчета, - это модель, но я действительно не уверен, что будет происходить в контроллере? Если задача контроллера заключается в координации между представлением и моделью, то должен ли я передавать свои входные данные «контроллеру», который затем передает их на php, а затем передает результат обратно по тому же маршруту? Я понимаю эту закономерность в принципе, но в данном случае это кажется посторонним. Я изучал несколько фреймворков MVC (.NET, Laravel), но действительно хочу получить более фундаментальное понимание, не создавая все строительные леса. Любые советы приветствуются!
Это очень хорошее объяснение. Я не совсем понимаю, что если у меня нет базы данных, есть ли у меня «Модель» как таковая и мой PHP, который на самом деле содержит мою логику приложения, а затем мой контроллер или «официант», если использовать аналогию с рестораном?






Архитектурный шаблон MVC действительно не предназначен для «простых приложений». Как правило, не стоит прилагать все усилия, чтобы добавить всю эту сложность. Это потому, что, по сути, «MVC» - это просто набор ограничений для различных уровней, которые вы добавляете, когда большая кодовая база становится трудной для содержать.
Это не волшебная волшебная пыль, которой можно посыпать свой проект.
A для вашего "понимания" ... ну ... просмотры действительно не заканчиваются как "html". На нем есть немного более длинный пост здесь, но версия TL; DR: шаблоны - это то, что действительно обрабатывает html, а представления - это то, что управляет / собирает / заполняет шаблоны.
Что касается ваш главный вопрос: в обязанности контроллеров входит изменение состояния слой модели. Вот и все.
Это не имеет ничего общего с лесами (это инструмент быстрой разработки) и ничего не координирует. Как я сказал выше: MVC касается ограничений. На уровне пользовательского интерфейса контроллеры используют ввод пользователя для изменения состояния модели, а представления представляют текущее состояние модели.
P.S. «Маршрутизация» на самом деле не связана с MVC, потому что это, по сути, деталь в абстракции HTTP. Вы используете его только для того, чтобы решить, в какую часть слоя пользовательского интерфейса «тыкать».
На самом деле это очень полезно, спасибо. MVC возникает так часто, что создается впечатление, что это «правильный» способ делать что-то независимо от объема того, что вы создаете.
Это миф, который распространяют различные рамки. В небольших приложениях достаточно просто применить элементарный разделение проблем, и все будет в порядке.
Я считаю, что в данном случае это удалось. HTML не содержит логики для вычислений, он просто передает вводимые пользователем данные в php. Нет перекрытия. Я не понимаю, какую пользу принесет добавление дополнительного уровня сложности.
Вам следует проверить аналогию с рестораном MVC. Это простейшее объяснение.