/** * Matches a user submitted path with a previously defined route. * Assigns and returns an array of defaults on a successful match. * * @param string $request used to match against this routing map * @return array|false An array of assigned values or a false on a mismatch */ public function match($request) { // This is in here so that the router doesn't break when Route_Abstract gets // upped to version 2 and accepts $request objects. (after that happens, this // code may be removed if (parent::getVersion() == 1) { $match = $request->getPathInfo(); } else { $match = $request; } $result = parent::match($match); $params = $request->getParams(); $map = $this->_variableMap; // If certain map elements weren't specified, we look for their regular ?controller= names if (!isset($map["controller"])) { $map["controller"] = "controller"; } if (!isset($map["module"])) { $map["module"] = "module"; } if (!isset($map["action"])) { $map["action"] = "action"; } foreach ($map as $mvcParam => $urlParam) { if (isset($params[$urlParam])) { $result[$mvcParam] = $params[$urlParam]; // save for later assembly $this->_paramValues[$urlParam] = $params[$urlParam]; } else { // maybe we got it from the regular $route (first param to constructor) if (!isset($result[$mvcParam])) { // This route isn't satisfied because not all vars were passed. return false; } } } return $result; }