get(self::class); } public function run(bool $isSetupPage = false): void { $container = ContainerBuilder::getContainer(); $requestHandler = new QueueRequestHandler($container, new ApplicationHandler($this, $this->responseRenderer)); $requestHandler->add(ErrorHandling::class); $requestHandler->add(OutputBuffering::class); $requestHandler->add(PhpExtensionsChecking::class); $requestHandler->add(ServerConfigurationChecking::class); $requestHandler->add(PhpSettingsConfiguration::class); $requestHandler->add(RouteParsing::class); $requestHandler->add(ConfigLoading::class); $requestHandler->add(UriSchemeUpdating::class); $requestHandler->add(SessionHandling::class); $requestHandler->add(EncryptedQueryParamsHandling::class); $requestHandler->add(UrlParamsSetting::class); $requestHandler->add(TokenRequestParamChecking::class); $requestHandler->add(DatabaseAndTableSetting::class); $requestHandler->add(SqlQueryGlobalSetting::class); $requestHandler->add(LanguageLoading::class); $requestHandler->add(ConfigErrorAndPermissionChecking::class); $requestHandler->add(RequestProblemChecking::class); $requestHandler->add(CurrentServerGlobalSetting::class); $requestHandler->add(ThemeInitialization::class); $requestHandler->add(UrlRedirection::class); $requestHandler->add(SetupPageRedirection::class); $requestHandler->add(MinimumCommonRedirection::class); $requestHandler->add(LanguageAndThemeCookieSaving::class); $requestHandler->add(LoginCookieValiditySetting::class); $requestHandler->add(Authentication::class); $requestHandler->add(DatabaseServerVersionChecking::class); $requestHandler->add(SqlDelimiterSetting::class); $requestHandler->add(ResponseRendererLoading::class); $requestHandler->add(ProfilingChecking::class); $requestHandler->add(UserPreferencesLoading::class); $requestHandler->add(RecentTableHandling::class); $requestHandler->add(StatementHistory::class); $runner = new RequestHandlerRunner( $requestHandler, new SapiEmitter(), static fn (): ServerRequestInterface => ServerRequestFactory::create() ->fromGlobals() ->withAttribute('isSetupPage', $isSetupPage), function (Throwable $throwable): ResponseInterface { $response = $this->responseFactory->createResponse(StatusCodeInterface::STATUS_INTERNAL_SERVER_ERROR); $response->getBody()->write(sprintf('An error occurred: %s', $throwable->getMessage())); return $response; }, ); $runner->run(); } public function handle(ServerRequest $request): Response { return Routing::callControllerForRoute( $request, Routing::getDispatcher(), ContainerBuilder::getContainer(), $this->responseFactory, ); } }