/** * Dispatch */ public function run() { $config = Service::get('config'); $request = Service::get('request'); $route = Service::get('router')->find($request->getUrl()); $user = Service::get('user')->getUser(); if (empty($user) & !empty(Cookie::get($config->getVal('remember/cookie_name')))) { $user = Service::get('user'); $user = $user->find(); } if (empty($user)) { if (!in_array($request->getUrl(), array('/login', '/auth', '/gate', '/register', '/reg'))) { $response = new RedirectResponse('/gate'); $response->send(); } } if (!empty($route)) { $controller_class = $route['controller'] . 'Controller'; if (!class_exists($controller_class)) { throw new \Exception("Controller class [" . $route['controller'] . "] doesn't exist"); } $controller = new $controller_class(); if (!method_exists($controller, $route['action'] . 'Action')) { throw new \Exception("Method [" . $route['action'] . "Action ] doesn't exist in [" . $route['controller'] . "]"); } $action = $route['action'] . 'Action'; $response = call_user_func_array(array($controller, $action), $route['params']); if ($response->type == 'html') { $renderer = new Renderer(URL . '/src/template.php'); $renderer->setVars(array('content' => $response->content)); $response->content = $renderer->render(); } $response->send(); } else { throw new \Exception("Wrong route [" . $request->getUrl() . "]"); } }