В правильном ли направлении строится система роутингов?
Направление более-менее правильное, но путь еще предстоит большой.
Что в роутинге делают htmlspecialchars и trim? Если в запросе пришел мусор, лучше не устраивать лотерею, а честно показывать 404. По крайней мере поначалу.str_replace('/', '\\', $str)Тестовый сервер на windows? В последствии он только на windows и будет крутится?
(Хинт: есть такая штука как DIRECTORY_SEPARATOR)
Переменные с названиями $str и $str2 пораюдуют вас, когда вы попытаетесь вспомнить что делает этот код всего-лишь через полгодика.if (file_exists ...Не лучше ли поручить подключение классов автолоадеру? Он специально для таких случаев и придуман.
Ну и echo с выводом ошибок в браузер - это жесть. Надеюсь, что это временная заглушка.
Как уже сказал Stalker_RED направление правильное, но надо еще больше отделить мух от котлет.
Если ваш класс занимается как бы рутингом, то он и должен только этим заниматься. То есть он обязан вернуть только инстанс класса тому, кто его запрашивает. А тот кто вызывает проверяет нужный ли инстанс он вообще получил и что с ним дальше делать.
А вы вместо этого вы вызываете $action, делая медвежью услугу.
А вдруг вам завтра надо будет не сразу выводить данные в браузер, а получить контент по данному запросу? Вам придется шаманить сам рутинг и вот тут вот начнутся костыли.