# Framework Debug-Modul

Dieses Modul bietet eine übersichtlichere Alternative zu `var_dump` und vereinfacht das Debugging in der Anwendung.

## Features

- **Übersichtliche Formatierung** - Besser lesbar als `var_dump`
- **Kontext-Informationen** - Zeigt Datei, Zeile, Zeit und Speicherverbrauch
- **Verschiedene Ausgabeformate** - HTML für Browser, Konsole für CLI
- **Spezialisierte Funktionen** - Für Arrays und Objekte optimiert
- **Debug-Historie** - Verfolgt alle Debug-Aufrufe
- **Einfache Konfiguration** - Kann für verschiedene Umgebungen aktiviert/deaktiviert werden
- **Erweiterbar** - Eigene Formatter und Outputs möglich

## Verwendung

### Einfaches Debugging

```php
// Variable debuggen
debug($variable, 'Meine Variable');

// Debuggen und Ausführung beenden
dd($variable, 'Fehleranalyse');

// Array-spezifisches Debugging
debug_array(['a' => 1, 'b' => 2], 'Mein Array');

// Objekt-Debugging mit Methoden- und Property-Liste
$user = new User();
debug_object($user, 'Benutzer');

// Einfache Log-Nachrichten
debug_log('Benutzer wurde erstellt', 'INFO');

// Historie aller Debug-Aufrufe anzeigen
debug_history();
```

### Konfiguration

```php
// In Bootstrap-Datei oder Service-Provider
use App\Framework\Debug\Debugger;
use App\Framework\Debug\Outputs\HtmlOutput;
use App\Framework\Debug\Formatters\HtmlFormatter;

// Für Entwicklungsumgebung aktivieren
Debugger::configure(
    enabled: true,
    output: new HtmlOutput(),
    formatter: new HtmlFormatter()
);

// In Produktionsumgebung deaktivieren
if ($app->isProduction()) {
    Debugger::disable();
}
```

## Eigene Formatierung und Ausgabe

Das Modul kann durch eigene Implementierungen von `FormatterInterface` und `OutputInterface` erweitert werden.

```php
namespace App\Debug;

use App\Framework\Debug\Formatters\FormatterInterface;
use App\Framework\Debug\DebugEntry;

class MyCustomFormatter implements FormatterInterface
{
    public function format(DebugEntry $entry): string
    {
        // Eigene Formatierung implementieren
    }

    public function formatHistory(array $entries): string
    {
        // Eigene Formatierung für Historie
    }

    public function formatValue(mixed $value): string
    {
        // Eigene Formatierung für Werte
    }
}
```

## Integration

Um die Helper-Funktionen global verfügbar zu machen, fügen Sie die folgende Zeile zu Ihrer Composer-Datei hinzu:

```json
{
    "autoload": {
        "files": [
            "src/Framework/Debug/helpers.php"
        ]
    }
}
```

Dann führen Sie `composer dump-autoload` aus.
