/**
  * 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);
 }