public function testSuffix() { $routeMatch = new RouteMatch(array()); $resolver = new TemplatePathResolver(); $resolver->setSuffix('.unkown'); $routeMatch->setMatchedRouteName('/test'); $this->assertSame('/test.unkown', $resolver->resolve($routeMatch)); }
/** * @param Request $request * @param Response $response * * @return bool */ public function dispatch(Request $request, Response $response) { while ($this->routing->valid()) { $route = $this->routing->key(); $action = $this->routing->current(); if (is_callable($route)) { $routeResult = call_user_func($route, $request); } else { $routeResult = $this->dispatchByType($route, $request); } if ($routeResult !== false) { $params = false; if ($routeResult instanceof RouteMatch) { $params = $routeResult->getParams(); } elseif (is_array($routeResult)) { $params = $routeResult; $routeResult = new RouteMatch($params); $routeResult->setMatchedRouteName($request->getUri()->getPath()); } else { $routeResult = new RouteMatch(array()); $routeResult->setMatchedRouteName($request->getUri()->getPath()); } if (is_int($action)) { $actionResult = $response->withStatus($action); } else { $actionScope = new ClosureActionScope($request, $response); $action = $action->bindTo($actionScope); $actionResult = $params ? call_user_func_array($action, $params) : call_user_func($action, $routeResult); } if ($actionResult === false) { $this->routing->next(); continue; } elseif ($actionResult instanceof ActionContinueInterface) { $this->routing->send($actionResult); continue; } $this->actionResponse = $this->handleActionResult($routeResult, $actionResult, $response); return true; } $this->routing->next(); } return false; }