/** * 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; }
/** * @test * @depends match_withWildcard_returnTrue * @param Route $route * @return Data */ public function getUrlParams_withWildcard_returnData(Route $route) { $params = $route->getUrlParams(); $this->assertEquals(3, count($params->toArray())); $this->assertSame(['name' => ['first', 'last'], 'date' => ['year', 'month', 'day'], 'time' => ['hour', 'minute', 'second']], $params->toArray()); return $params; }