Метод, который я использую, на самом деле включает два контроллера.
Есть Фронт-контроллер, который контролирует первоначальное поступление запроса. Тогда есть Контроллер страницы, который является определенным для текущей страницы (в зависимости от URI). Передний контроллер управляет загрузкой правильного контроллера страницы.
Задача Контроллера страницы состоит в том, чтобы получить доступ к Модели (для доступа к БД) и другим классам для составления данных для просмотра страницы.
Я бы сказал, что Front Controller никогда не должен делать ничего специфичного для URI и должен оставаться настолько универсальным, насколько это возможно, чтобы его можно было эффективно использовать повторно.