Задать вопрос
  • MVC php на пальцах?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ох...

    Model View Controller. Да ну его, ему уже 45 лет (придумали в 79-ом году). Давайте лучше про Model View Adapter погокорим. это то что все используют в популярных фреймворках последние лет так 10 так точно.

    mvc-mvp-mvvm-6-638.jpg?cb=1375170002

    Вообще в этом всем важно не только то, что каждая буква обозначает, а как они друг с дружкой связаны.

    View - это не только HTML, но и вообще представление в целом, а так же логика его формирования. Шаблонизаторы, фильтры, различные функции/объекты помогаютщие нам сформировать view (например форматирование дат, сериализаторы и т.д.) В подавляющем большинстве случаев "представление" наших данных - это HTTP запросы и HTTP ответы. HTML - э то лишь часть HTTP ответа.

    Model - Это целый слой, который может быть представлен в виде кучи отдельных объектиков, структур и т.д. Его задача - делать дела и хранить/менять состояние системы. Тут легко запутаться потому что термин "модель" много чего значит. Воспринимайте его как "слой логики" а не конкретные объекты. И да - база данных и прочая чушь - это детали реализации этого слоя. "не важные штуки" словом. Туда же и ActiveRecord, ORM-ки всякие. Это деталь реализации и все остальные чуваки (view и controller) о них знать ничего не должны (хотя иногда могут в целях упрощения).

    Controller или адаптер. Это опять же не обязательно один объект. это может быть цепочка адаптеров (еще называют фронт-контроллером, middlewares и т.д.). Его задача весьма простая. Получаем представление данных на входе (HTTP запрос), определяем что надо делать, и просим модель что-то сделать (ни в коем случае не меняем ничего самостоятельно в контроллере, он только просит). Потом мы можем попросить модель вернуть нужный нам кусок состояния, и попросить View сформировать представление (HTTP ответ).

    Как-то так. В целом же это я сейчас описал "идеальный мир". Вся суть этого подхода - разделение логики презентационной и логики приложения. Зачем это надо? что бы было проще жить! Обычно UI приложения или способы взаимодействия с ним меняются почаще логики или как минимум в разные моменты времени. Адаптеры в этом случае служат промежуточным слоем, они ничего сами не делают, это "переводчики". Они просто переводят то, что сказано в запросе в язык понятный приложению и обратно.

    Но на начальной стадии можно слегка нарушать эти правила, делать толстые контроллеры и т.д. В этом случае бизнес логика будет потихоньку "вытекать" из модели. Это не хорошо, и на хоть сколько нибудь больших проектах может привести к проблемам. Потому важно находить баланс.
    Ответ написан
    Комментировать
  • MVC php на пальцах?

    @xfg
    Модель - это любая ваша бизнес-логика, всякие вычисления и запросы к бд. То есть то, без чего приложение впринципе не имеет смысла.

    Контроллер - это посредник между моделью и видом. Он запрашивает данные (вызывает методы) у модели и затем передает их в вид.

    Вид - с помощью полученных данных от контроллера рисует пользовательский интерфейс.

    Смысл в том, чтобы отделить логику приложения от представления. Представление ничего не знает о модели и наоборот.

    Нужна одна точка входа. Клиент всегда запрашивает только index.php, оно там внутри на основе данных из запроса решает какой контроллер создать и какой метод из контроллера выполнить. Всё.
    Ответ написан
    4 комментария
  • Почему не стоит мешать html c php?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    По сути, я видел 90-килобайтные файлы мешанины PHP, HTML, MySQL-запросов и прочего.
    Писать такой код просто.
    Проблемы начнутся через полгода, когда вы этот код забудете и нужно будет что-то изменить. Вам придется проверять весь код и пересматривать его, чтобы не зацепить изменением в одном месте кода другое, совсем неожиданное.
    После того, как новички несколько раз сталкиваются с такой проблемой, они начинают писать код более структурировано. Один с методов - это отделить получение информации от пользователя и базы данных с помощью одного кода, отображать эту информацию конечному пользователю с помощью другого, и решать, какую информацию показать и связать два предыдущих компонента между собой - с помощью третьего набора кода.
    Грубо говоря, так и получается структура MVC, в которой html и php код разделен.
    Это если условно, так как сколько людей - столько и пониманий MVC.
    Ответ написан
    Комментировать
  • Почему не стоит мешать html c php?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    Почему нельзя? Можно! Просто получится сложночитаемая и малоподдерживаемая хрень.
    Ответ написан
    Комментировать
  • Почему не стоит мешать html c php?

    @vanillathunder
    Отделение логики приложения, от представления(html). Так код проще поддерживать и переиспользовать.
    Ответ написан
    Комментировать
  • Почему не стоит мешать html c php?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Не нельзя, а не нужно. should not.

    Если коротко: это НЕ удобно, это НЕ юзабельно, это противоречит ВСЕМ основным принципам программирования, это НИКТО не будет поддерживать, это быдлокод.

    Ты попробуй написать относительно сложный проект на plain php в перемешку с html (25k+ строк) и тогда посмотри, как же прекрасно все выглядит, работает и как быстро ты это писал)
    Ответ написан
    Комментировать