Exemplo n.º 1
0
Arquivo: Router.php Projeto: imbo/imbo
 /**
  * Route the current request
  *
  * @param Request $request The current request
  */
 public function route(Request $request)
 {
     $httpMethod = $request->getMethod();
     if ($httpMethod === 'BREW') {
         throw new RuntimeException('I\'m a teapot!', 418);
     }
     if (!isset(self::$supportedHttpMethods[$httpMethod])) {
         throw new RuntimeException('Unsupported HTTP method: ' . $httpMethod, 501);
     }
     $path = $request->getPathInfo();
     $matches = [];
     foreach ($this->routes as $resourceName => $route) {
         if (preg_match($route, $path, $matches)) {
             break;
         }
     }
     // Path matched no route
     if (!$matches) {
         throw new RuntimeException('Not Found', 404);
     }
     // Create and populate a route instance that we want to inject into the request
     $route = new Route();
     $route->setName($resourceName);
     // Inject all matches into the route as parameters
     foreach ($matches as $key => $value) {
         if (is_string($key)) {
             $route->set($key, $value);
         }
     }
     // Store the route in the request
     $request->setRoute($route);
 }