Как абсолютно верно заметил
Роман Юрьевич Ипатьев, проблема не в вызове аргументов, а в абсолютно нелогичном подходе к архитектуре, которая тут просто швах...
Просто на будущее - архитектура в разы важнее скорости исполнения, так как ресурсов всегда можно накинуть, а с кривой архитектурой ни поддержка, ни нормальная работа невозможна. Вы экономите 2 байта на каких-то мелких манипуляциях через Ж, при этом в коде совершенно невозможно разобраться, а любая модификация функционала может уронить весь проект или заставить менять код в 40 местах.
Файл RouteController.php обрабатывает URL
уже плохо, контроллер не должен знать что-то про урл и прочие переменные извне. Для этого есть роутер и реквест.
и делает вывод о типе контроллера (гость, авторизованный пользователь или администратор).
Как тип контроллера соотносится с ролью пользователя?
Создаёт объект этого контроллера и отправляет в него аргументами (str)имя контроллера и (str) полученный URL.
У вас же уже вызван контроллер, RouteController.php, либо он не контроллер, либо зачем тогда снова контроллер создавать? И зачем ему урл?
Эти аргументы попадают в родительский контроллер файла Controller.php и оттуда далее используются в условном ветвлении и передаются в соответствующие функции, где дальше из этих функций опять передаются в нужные функции.
Сложнааа, слоожжнаа (с) Карина. Очень запутанно и очень странно работает ваша творческая мысль.
На самом деле все проще и сложнее одновременно. Понимаю что на основе разрозненных "слышал звон" вы попытались создать что-то свое, в надежде создать лучшее светлое будущее для всех, но, короче, ничего не получилось.
Про то как оно примерно должно работать рассказывать наверное не стоит, чтобы не смутить ваш творческий поиск готовыми решениями. Если будет интересно -
Дмитрий скинул вам замечательный курс от Елисеева, прям рекомендую.