Ejemplo n.º 1
0
 /**
  * Inspired
  * @param $requestURL
  * @param $requestMethod
  * @return bool|Route
  */
 public function match($requestURL, $requestMethod)
 {
     foreach ($this->routeCollection->getAll() as $route) {
         // compare methods
         if (!in_array($requestMethod, $route->getMethods())) {
             continue;
             // doesn't match request method
         }
         // strip subdirectory
         $currentDir = dirname($_SERVER['SCRIPT_NAME']);
         if ($currentDir != '/') {
             $requestURL = str_replace($currentDir, '', $requestURL);
         }
         if (!preg_match('@^' . $this->basePath . $route->getRegex() . '@i', $requestURL, $matches)) {
             continue;
             // doesn't match url
         }
         $params = [];
         if (preg_match_all('/:([\\w-%]+)/', $route->getUrl(), $argumentKeys)) {
             $argumentKeys = $argumentKeys[1];
             foreach ($argumentKeys as $key => $name) {
                 if (isset($matches[$key + 1])) {
                     $params[$name] = $matches[$key + 1];
                 }
             }
         }
         $route->setParameters($params);
         return $route;
     }
     return false;
 }