Something went wrong. Try again.
A barebones implementation of an atproto PDS in PHP and Slim Framework 4.
pds php atproto
Something went wrong. Try again.
2.3 kB · 74 lines
PHP
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475<?php
declare(strict_types=1);
namespace App\Application\Handlers;
use App\Application\ResponseEmitter\ResponseEmitter;use Psr\Http\Message\ServerRequestInterface as Request;use Slim\Exception\HttpInternalServerErrorException;
class ShutdownHandler{ private Request $request;
private HttpErrorHandler $errorHandler;
private bool $displayErrorDetails;
public function __construct( Request $request, HttpErrorHandler $errorHandler, bool $displayErrorDetails ) { $this->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); } }}