добавляем роут PHP: // сам метод public function get($pattern, $handler) { $this->router->addRoute($pattern, $handler, ['GET']); } // где-то там добавили $application->get('/', HomeAction::class); получили данные текущего роута и запустили PHP: // public function run() { $result = $this->router->matchRoutes($this->request); // return new Result(...) call_user_func_array(self::$container->get($result->getHandler()), $result->getParameters()); } // запуск $application->run(); А как мне организовать теперь группировку роутов, чтобы ну там, например, потом где-то в промежуточном осуществлять редирект-контроль авторизованного. Есть мысль, что нужно ну например создать группы и проверять, если группа не для авторизованного, то редиректить на домашнюю для неавторизованного, но не очень понятно, как это сделать, где хранить имя группы, где хранить текущие данные полученного роута соответствующей группы, чтобы производить с ними действия контроля? Может кто-то на пальцах пояснит? Пока что есть идея задавать имя группы при создании роута, но не очень понятно, после получения $result, что делать дальше с именем группы? Где его хранить, чтобы использовать его в промежуточном сервисе? Пропускать Result через контейнер?
Группа не обязательно нужна. Вместо группы, вешаешь на один роут больше одного экшена. Код (Text): $application->get('/admin', Guard::class) $application->get('/admin', AdminAction::class); Сначала выполнится Guard. Если пользователь не авторизован, Guard абортнет запрос с кодом 403 и редиректом.
интересный фокус, суть понял, осталось допетрить как создать общий роут с проверкой авторизации для списка роутов, прописанных после него , чтобы он перекрывал список роутов --- Добавлено --- @[vs] а то я грешным делом вот так наговнокодил PHP: $result = $this->router->matchRoutes($this->request); if ($result->getGroup()) { call_user_func(self::$container->get(self::$container->get('settings')['group'][$result->getGroup()])); } call_user_func_array(self::$container->get($result->getHandler()), $result->getParameters()); конфиг PHP: use application\support\RedirectToAuth; use application\support\RedirectToGuest; $container->set('settings', function () { return [ 'group' => [ 'guest' => RedirectToAuth::class, 'auth' => RedirectToGuest::class ] ]; }); ну и роуты примерно так PHP: $application->group('guest') ->get('/', HomeAction::class) ->get('/signin', SigninAction::class); $application->group('auth') ->get('/menu', MenuAction::class);