public function testSuffix()
 {
     $routeMatch = new RouteMatch(array());
     $resolver = new TemplatePathResolver();
     $resolver->setSuffix('.unkown');
     $routeMatch->setMatchedRouteName('/test');
     $this->assertSame('/test.unkown', $resolver->resolve($routeMatch));
 }
Beispiel #2
0
 /**
  * @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;
 }