status(500); $response->end($error['message']); } }); /** @var HRequest $sRequest */ [$sRequest, $sResponse] = static::setContext($request, $response); if ($sRequest->is('favicon.ico')) { return $params = $sResponse->send($sRequest->isNotFound(), 200); } return $params = Snowflake::app()->getRouter()->dispatch(); } catch (Error | \Throwable $exception) { $params = $this->sendErrorMessage($sResponse ?? null, $exception, $response); } finally { $events = Snowflake::app()->getEvent(); if (!$events->exists(Event::EVENT_AFTER_REQUEST)) { return; } $events->trigger(Event::EVENT_AFTER_REQUEST, [$sRequest, $params]); } } /** * @param $sResponse * @param $exception * @param $response * @return false|int|mixed|string * @throws Exception */ protected function sendErrorMessage($sResponse, $exception, $response) { $params = Snowflake::app()->getLogger()->exception($exception); if (empty($sResponse)) { $sResponse = \response(); $sResponse->response = $response; } return $sResponse->send($params, 200); } /** * @param $request * @param $response * @return array * @throws Exception */ public static function setContext($request, $response): array { $request = Context::setContext('request', HRequest::create($request)); $response = Context::setContext('response', HResponse::create($response)); return [$request, $response]; } }