Для начала, перед тем как я начну пояснять принцип работы именно в php, я бы хотел отметить что 90% статей найденных в google обыкновенный шлак, который вводит начинающих программистов в заблуждение.
Всем должно быть и так понятно что аббревиатура MVC понимается как (Модель-Представление-Контроллер), и суть его в том что бы разделить код на три основных уровня абстракции (модель - работа с данными), (контроллер - точка входа выхода данных), (вид - представление данных).
Большинство неправильных представлений данного шаблона выглядят так:
Браузер->Запрос->Контроллер->Модель->Вид
отнюдь это не совсем верный поход, если рассмотреть при полно разборе данного шаблона, станет ясно что правильней будет так:
Браузер->Запрос->Контроллер<->Модель<->Контроллер->Вид
то есть при запросе, контроллер отправляет данные в модель, она их обрабатывает или производит иные действия, затем возвращает их в контроллер где они отправляются в шаблон, я надеюсь это понятно ?
Часто слышу вопросы о том как передаются данные в модель, данные как правило передаются в виде массива либо простой переменной в качестве параметра функции или конструктора класса, потом они обрабатываются, и возвращаются уже в готовом виде в контроллер где была вызвана функция или метод класса отвечающие за определенное действие с данными (будь то валидация/фильтрация, вывод/запись в бд, или что то иное), где и передаются в шаблон для отображения на экране.
Все остальное делается по ситуации или по определенной необходимости, вообщем я описал основу, примера конечно пока не будет, так как мне немного лень открывать phpStorm что бы запостить пару десятков строк.
Если есть вопросы, их можно задать здесь.