Хотел уточнить своё понимание концепции. Я понял что работать всё должно примерно так:
url разбирает роутер, определяя какой контроллер будет обрабатывать запрос
Далее подключается нужный контроллер, а если подходящего контроллера не найдено - вид отдаёт 404 ошибку.
Если контроллер успешно подключен, он извлекает необходимые данные через модели, получает некоторый массив необходимых данных и передаёт их в вид
Вид принимает данные и вставляет их в нужные места шаблона и выдает результат
Я правильно понял?
Второстепенный вопрос: нормально-ли вызывать другие контроллеры из контроллера?
И ещё один второстепенный вопрос. Можно ли назвать контроллер сценарием страницы? Ведь по сути он манипулирует данными (через модели) и приводит их в необходимый для вьювера вид, например в массив.
То есть всё работает так:
site/news
Роутер: я ищу в папке controllers news.php, если нахожу - произвожу инклуд.
Контроллер news.php: я запрашиваю у моделей (классов) необходимую информацию, например массив из последних 10 новостей, общее их количество, количество страниц с новостями и т.д.
Теперь я передаю данные в вьювер новостей "news.php"
Вьювер news.php: я отвечаю за то, что увидит в итоге пользователь. В цикле перебирающем пришедшие данные я подключаю шаблон short_article для каждой новости и передаю туда данные о заголовке, тексте, дате и авторе (для примера), а в ответ получаю сгенерированный html код который передаю в конструктор шаблона article_list, в ответ получаю опять же html который передаю в шаблон main вместе с другими данными полученными от контроллера.
Собранную строку я (функция) возвращаю обратно в контроллер, который в свою очередь выводит её пользователю. Работа скрипта завершена, пользователь видит страницу из шаблона main (основной шаблон сайта), где в $content вставлен шаблон article_list (обертка для списка материалов с навигацией по страницам), где в $content вставлена строка собранная из шаблонов short_article.
Если вдруг какого-то шаблона не обнаруживается, выбрасывается исключение и контроллер может точно доложить о том, что такого-то шаблона не существует (ну или просто ошибку 500 в продакшене).
Правильно ли я описал пример работы или нет?
И вот ещё. Кто должен выводить данные пользователю? Контроллер или вьювер?
Вот варианты:
Контроллер: Собираю данные. Передаю в вьювер
Вьювер: Собираю шорты Собираю лист Собираю мэйн Возвращаю строку
Контроллер: Вывожу строку
ИЛИ
Контроллер: Собираю данные.
Собираю шорты Собираю лист Собираю мэйн
Вывожу строку
ИЛИ
Контроллер: Собираю данные. Передаю в вьювер
Вьювер: Собираю шорты Собираю лист Собираю мэйн Вывожу строку
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники