<?php

declare(strict_types=1);

namespace App\Core\Exceptions;

use Throwable;

final class Handler
{
    public static function register(bool $debug = false): void
    {
        set_exception_handler(static function (Throwable $exception) use ($debug): void {
            http_response_code(500);

            if ($debug) {
                echo '<h1>Application Error</h1>';
                echo '<p><strong>' . htmlspecialchars($exception->getMessage(), ENT_QUOTES, 'UTF-8') . '</strong></p>';
                echo '<pre>' . htmlspecialchars((string) $exception, ENT_QUOTES, 'UTF-8') . '</pre>';
                return;
            }

            error_log((string) $exception);
            echo 'حدث خطأ غير متوقع. حاول مرة أخرى أو تواصل مع الدعم.';
        });
    }
}
