• MVC php на пальцах?

    @Silm
    Просто говоря MVC - физическое разделение кода на три основные логические части: Model, View, Controller с которыми мы обязуемся работать определенным образом в целях облегчения процесса разработки.

    В файлах моделей описываются данные и происходит основная их обработка. Логично, что тут мы работаем и с базой данной.

    В отображениях (View) располагается так называемый "шаблон". Как правило это файлы с HTML версткой и PHP логикой отвечающей за отображения конкретных элементов. Например, тут нельзя делать запрос к БД, но можно написать цикл, который будет отображать блоки верстки с новостями.

    Контроллеры связывают между собой модель и отображение. Они определяют какие надо получить данные, запрашивают их у моделей, собирают их вместе и передают в отображение.

    Пример в студию
    Итак. Допустим нам надо отобразить страницу с постом в блоге. Представим что страница у нас состоит из текста поста, названия сайта и списка похожих публикаций.

    Запрос попадает в нужный контроллер (контроллер постов). Он начинает собирать нужные данные:
    • Контроллер достает из настроек название сайта.
    • Контроллер обращается к модели отвечающей за посты, в ней содержатся различные методы, отвечающие за работу с постами (вывод списка постов, отображение одного поста, редактирование поста итп), каждый метод может делать различные запросы к БД и производить необходимые манипуляции с данными. В данном случае мы вызываем метод getPost() который получает id поста, делает выборку из БД и возвращает результат.
    • Данные из модели возвращается в контроллер. Если пост с переданным id не был найдет, именно контроллер перенаправит пользователя на страницу с кодом 404.
    • Но в нашем случае пост был найден и теперь контроллер берет из полученных данных название поста и обращается к модели ответственной за получение похожих публикаций, она на основе полученного названия возвращает массив из похожих названий статей и их id (все что нужно в нашем примере для отображения списка ссылок).
    • Контроллер собрал все что было нужно и теперь берет заданный нами файл шаблона отображения и передает туда все необходимые данные.
    • В отображении мы отображаем название сайта в тайтле, внутри верстки выводим наш пост, а по массиву похожих публикаций приходимся циклом отображая его как список ссылок.
    • Страница с постом успешно отображена.

    Это такой, упрощенный пример. Но надеюсь дает общее представление о том, за что отвечает каждая из частей и как они работают вместе.

    Чтобы понять, что еще может делать каждая из частей и как вообще это выглядит, изучите документацию и примеры по одному из популярных PHP фреймворков, например, таких как Yii и Laravel.
    Ответ написан