request = $request; $this->errorHandler = $errorHandler; $this->displayErrorDetails = $displayErrorDetails; } public function __invoke(): void { $error = error_get_last(); if ($error) { $errorFile = $error['file']; $errorLine = $error['line']; $errorMessage = $error['message']; $errorType = $error['type']; $message = 'An error while processing your request. Please try again later.'; if ($this->displayErrorDetails) { switch ($errorType) { case E_USER_ERROR: $message = "FATAL ERROR: {$errorMessage}. "; $message .= " on line {$errorLine} in file {$errorFile}."; break; case E_USER_WARNING: $message = "WARNING: {$errorMessage}"; break; case E_USER_NOTICE: $message = "NOTICE: {$errorMessage}"; break; default: $message = "ERROR: {$errorMessage}"; $message .= " on line {$errorLine} in file {$errorFile}."; break; } } $exception = new HttpInternalServerErrorException($this->request, $message); $response = $this->errorHandler->__invoke( $this->request, $exception, $this->displayErrorDetails, false, false, ); $responseEmitter = new ResponseEmitter(); $responseEmitter->emit($response); } } }