<?php

declare(strict_types=1);

namespace App\Framework\Debug;

use App\Framework\Debug\Formatters\ConsoleFormatter;
use App\Framework\Debug\Formatters\HtmlFormatter;
use App\Framework\Debug\Outputs\ConsoleOutput;
use App\Framework\Debug\Outputs\HtmlOutput;

/**
 * Service Provider für die Einbindung des Debug-Moduls.
 */
final class DebugServiceProvider
{
    /**
     * Registriert das Debug-Modul in der Anwendung.
     */
    public function register(bool $enabled = true): void
    {
        // Standardkonfiguration basierend auf Umgebung
        $isConsole = PHP_SAPI === 'cli';

        $output = $isConsole ? new ConsoleOutput() : new HtmlOutput();
        $formatter = $isConsole ? new ConsoleFormatter() : new HtmlFormatter();

        Debugger::configure($enabled, $output, $formatter);
    }

    /**
     * Konfiguriert das Debug-Modul für die Produktionsumgebung.
     */
    public function configureForProduction(): void
    {
        Debugger::disable();
    }

    /**
     * Konfiguriert das Debug-Modul für die Entwicklungsumgebung.
     */
    public function configureForDevelopment(): void
    {
        $isConsole = PHP_SAPI === 'cli';

        $output = $isConsole ? new ConsoleOutput() : new HtmlOutput();
        $formatter = $isConsole ? new ConsoleFormatter() : new HtmlFormatter();

        Debugger::configure(true, $output, $formatter);
    }
}
