Example #1
0
 public function match(Configurator $configurator)
 {
     $request = new Request();
     $endpoints = $this->getEndpoints();
     $requestedRoute = $request->getRequestedRoute();
     $requestType = $request->getType();
     $controllerNamespace = $configurator->getControllerNamespace();
     foreach ($endpoints as $endpoint) {
         $controllerName = $endpoint[self::ENDPOINT_CONTROLLER_LABEL];
         $fullControllerName = $controllerNamespace . $controllerName;
         $controllerMethod = $endpoint[self::ENDPOINT_CONTROLLER_METHOD_LABEL];
         if ($endpoint[self::ENDPOINT_REQUEST_TYPE_LABEL] !== $requestType) {
             continue;
         }
         if ($this->routeMatched($endpoint[self::ENDPOINT_MAP_LABEL], $requestedRoute, $request)) {
             $this->checkCalledControllerMethod($fullControllerName, $controllerMethod);
             $controller = new $fullControllerName($configurator);
             $this->injectDependecies($controller, $fullControllerName, $request, $configurator);
             $controller->{$controllerMethod}();
             exit;
         }
     }
     $this->invoke404($configurator);
     exit;
 }