public function testDefaultParamDoesNotOverrideParam() { $stack = new SimpleRouteStack(); $stack->addRoute('foo', new TestAsset\DummyRouteWithParam()); $stack->setDefaultParam('foo', 'baz'); $this->assertEquals('bar', $stack->match(new Request())->getParam('foo')); }
/** * match(): defined by \Zend\Mvc\Router\RouteInterface * * @see \Zend\Mvc\Router\RouteInterface::match() * @param Request $request * @return RouteMatch */ public function match(Request $request) { if (!method_exists($request, 'getUri')) { return null; } if ($this->baseUrl === null && method_exists($request, 'getBaseUrl')) { $this->setBaseUrl($request->getBaseUrl()); } $uri = $request->getUri(); $baseUrlLength = strlen($this->baseUrl) ?: null; if ($this->requestUri === null) { $this->setRequestUri($uri); } if ($baseUrlLength !== null) { $pathLength = strlen($uri->getPath()) - $baseUrlLength; foreach ($this->routes as $name => $route) { if (($match = $route->match($request, $baseUrlLength)) instanceof RouteMatch && $match->getLength() === $pathLength) { $match->setMatchedRouteName($name); foreach ($this->defaultParams as $paramName => $value) { if ($match->getParam($paramName) === null) { $match->setParam($paramName, $value); } } return $match; } } } else { return parent::match($request); } return null; }
/** * match(): defined by Route interface. * * @see Route::match() * @param Request $request * @return RouteMatch */ public function match(Request $request) { if (!method_exists($request, 'uri')) { return null; } $uri = $request->uri(); $baseUrlLength = strlen($this->baseUrl) ?: null; if ($this->requestUri === null) { $this->setRequestUri($uri); } if ($baseUrlLength !== null) { $pathLength = strlen($uri->getPath()) - $baseUrlLength; foreach ($this->routes as $route) { if (($match = $route->match($request, $baseUrlLength)) instanceof RouteMatch && $match->getLength() === $pathLength) { return $match; } } } else { return parent::match($request); } return null; }