コード例 #1
0
ファイル: RequestVars.php プロジェクト: Tony133/zf-web
 /**
  * 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;
 }