Example #1
0
 public function __invoke(Context $context)
 {
     $routeInfo = $context['routeInfo'];
     if (isset($routeInfo)) {
         switch ($routeInfo[0]) {
             case Dispatcher::FOUND:
                 $context->withStatus(200);
                 foreach ($routeInfo[2] as $k => $v) {
                     $context[$k] = urldecode($v);
                 }
                 $result = $routeInfo[1]($context);
                 if ($result) {
                     $context->withState($result);
                 }
                 break;
             case Dispatcher::METHOD_NOT_ALLOWED:
                 $context->throwError(405);
                 break;
         }
     } else {
         $routeBundle = $context['routeBundle'];
         if (isset($routeBundle)) {
             $context->shift($routeBundle['uri']);
             $routeBundle->getHandler()->dispatch($context);
             $context->unshift($routeBundle['uri']);
         }
     }
 }