/** * Adds a route. * * @param string|array $setting * @param string|null $name * * @return Router */ public function addRoute($setting, $name = null) { if (is_string($setting)) { $route = new Route($setting); } else { $setting = new RouteSetting($setting); $route = new Route($setting->pattern); $route->getUrlParams()->setValues($setting->defaultValues)->requireOffsets($setting->requiredParams); $methods = $route->getHttpMethods(); foreach ($setting->httpMethods as $method) { $methods[$method] = true; } } if (isset($name)) { $this->routes[$name] = $route; } else { $this->routes[] = $route; } return $this; }