Читаем про инверсию контроля (Inversion of Control) что бы разобраться что кто и когда должен вызывать. Так же разберитесь где приложение а где его границы и что не входит непосредственно в это понятие (роутеры, контроллеры, шаблонизаторы и т.д.). Ну последнее это если вы хотите знать как правильно, для "бложиков" такое явное разделение не обязательно.
После обработки его ответ можно передать уже в само приложение:
Приложение ничего не должно знать о роутере, более того, оно должно иметь возможность существования без оного. Ваш роутер должен на основе своих правил вызвать метод приложения, обычно контроллера, который представляет собой прослойку между приложением и UI (в нашем случае HTTP).
Но в этом случае если путей по сайту много довольно объемный код получается с перечислением всех вариантов роутинга.
Просто не нужно использовать такой подход для задания конфигурации роутера. Используйте массивчики, декларативный способ задания конфигов. Тогда их можно инклудить, экстендить и крутить вертеть как угодно, давай гибкость управления всем этим добром.
Но да, вы должны описать все маршруты явно, так потом будет удобнее работать, особенно на проектах где маршрутов этих реально много.