/**
  * @param IRoute $route
  * @param IContainer $container
  *
  * @return mixed
  */
 public function invoke(IRoute $route, IContainer $container)
 {
     list($controller, $method) = $this->extractControllerAndMethod($route->getAction());
     $this->ensureClassExists($controller);
     $instance = $container->get($controller);
     $this->ensureMethodExists($instance, $method);
     return $container->callMethod($instance, $method, $route->getParameters());
 }
示例#2
0
 /**
  * @param IRoute $route
  *
  * @return null|HttpResponse
  */
 public function buildResponseForRoute(IRoute $route)
 {
     $abstract = $route->getAction();
     if ($abstract instanceof IHttpResponse) {
         return $abstract;
     } else {
         $response = $abstract;
         if ($abstract instanceof Closure) {
             $response = $abstract(new CurrentRequest(), $route->getParameters());
         }
         if (!$response instanceof IHttpResponse) {
             $response = $this->createResponse(HttpStatusCode::OK, $response);
         }
         return $response;
     }
 }
 /**
  * @param IRoute $route
  * @param IContainer $container
  *
  * @return mixed
  */
 public function invoke(IRoute $route, IContainer $container)
 {
     return $container->call($route->getAction(), $route->getParameters());
 }
示例#4
0
 /**
  * @param IRoute $route
  * @param $method
  *
  * @return bool
  */
 public function compareRouteToMethod(IRoute $route, $method)
 {
     return array_contains($route->getMethods(), $method);
 }