/** * Attach a route to collection * * @param instanceof Attw\Router\Route $route */ public function add(Route $route) { if ($this->has($route->getName())) { throw new RouterException('A route with this name have already was registred'); } $this->routes[$route->getName()] = $route; }
/** * @param \Attw\Router\Route $route * @param array $params * @return array */ private function detectParams($route, array $params = array()) { $paramsUrl = array(); foreach ($route->getParams() as $param) { foreach ($params as $key => $value) { if ($param == $key) { $paramsUrl[] = $value; } } } return $paramsUrl; }
/** * @param \Attw\Router\Route $route * @param string $cController * @param string $cAction * @param string $requestMethod * @return array */ private function detectAll(Route $route, $cController, $cAction, $requestMethod, array $params) { $controllerData = $this->detectActionOrController($route->getController(), $cController, 'controller'); $actionData = $this->detectActionOrController($route->getAction(), $cAction, 'action'); if (isset($controllerData['controller_r'], $actionData['action_r'])) { if (strtolower($cController) == strtolower($controllerData['controller_r']) && strtolower($cAction) == strtolower($actionData['action_r']) && strtolower($requestMethod) == strtolower($route->getRequestMethod())) { $cController = $controllerData['controller_t']; $cAction = $actionData['action_t']; $paramsSetted = array($controllerData['controller_r'] => $controllerData['controller_t']) == $route->getController() && array($actionData['action_r'] => $actionData['action_t']) == $route->getAction() && strtolower($requestMethod) == strtolower($route->getRequestMethod()) ? $route->getParams() : array(); $params = $this->detectParams($params, $paramsSetted); } } return array('controller' => $cController, 'action' => $cAction, 'params' => $params); }