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; }