# Analytics-Framework: Migrationsleitfaden ## Von Version 1.x zu 2.x ### Überblick der Änderungen Die Version 2.x des Analytics-Frameworks führt mehrere wichtige Verbesserungen und Änderungen ein: - **Typsicherheit**: Neue Event-Klassen statt Arrays - **Dependency Injection**: Verbesserte Integration mit dem Container - **Storage-Abstraktion**: Flexiblere Speichermethoden - **Fehlerbehandlung**: Robustere Exception-Handling - **Middleware-System**: Standardisierte Middleware-Pipeline ### Notwendige Migrationsschritte #### 1. Konfiguration aktualisieren **Alt (1.x):** ```php return [ 'enabled' => true, 'auto_flush' => true, 'batch_size' => 50, 'storage' => 'file', 'storage_path' => '/pfad/zum/speicher', ]; ``` **Neu (2.x):** ```php return [ 'enabled' => true, 'auto_flush' => true, 'batch_size' => 50, 'storage_driver' => 'file', // Umbenannt 'storage_config' => [ // Neue Struktur 'path' => '/pfad/zum/speicher', ], 'excluded_paths' => [], // Neue Option 'excluded_user_agents' => [], // Neue Option 'max_file_size' => 10 * 1024 * 1024, // Neue Option ]; ``` #### 2. Event-Objekte (falls genutzt) **Alt (1.x):** ```php $analytics->track('custom_event', ['property' => 'value']); ``` **Neu (2.x) - Option 1 (abwärtskompatibel):** ```php // Weiterhin unterstützt $analytics->track('custom_event', ['property' => 'value']); ``` **Neu (2.x) - Option 2 (typsicher):** ```php use App\Framework\Analytics\Events\CustomEvent; $event = new CustomEvent('wert', ['weitere' => 'daten']); $analytics->trackEvent($event); ``` #### 3. Eigene Storage-Provider **Alt (1.x):** ```php class CustomStorage implements StorageInterface { public function store(array $events): void { // Implementation } public function retrieve(array $filters = []): array { // Implementation } public function clear(): void { // Implementation } } ``` **Neu (2.x):** ```php use Psr\Log\LoggerInterface; class CustomStorage implements StorageInterface { public function __construct( private readonly array $config, private readonly LoggerInterface $logger ) {} public function store(array $events): void { try { // Implementation mit Fehlerbehandlung } catch (\Exception $e) { $this->logger->error('Storage error', ['exception' => $e]); throw new StorageException('Failed to store events', 0, $e); } } // Andere Methoden analog } ``` #### 4. Middleware anpassen **Alt (1.x):** ```php $analyticsManager->addMiddleware(function(array $event) { // Verarbeitung return $event; }); ``` **Neu (2.x) - Option 1 (abwärtskompatibel):** ```php // Weiterhin unterstützt $analyticsManager->addMiddleware(function(array $event) { // Verarbeitung return $event; }); ``` **Neu (2.x) - Option 2 (typsicher):** ```php use App\Framework\Analytics\Middleware\AnalyticsMiddleware; use App\Framework\Analytics\Events\AnalyticsEvent; class CustomMiddleware implements AnalyticsMiddleware { public function process(AnalyticsEvent $event): ?AnalyticsEvent { // Verarbeitung return $event; } } // Registrierung $analyticsManager->addMiddleware(new CustomMiddleware()); ``` ### Automatisierte Tests Führen Sie die folgenden Tests durch, um sicherzustellen, dass die Migration erfolgreich war: ```bash php console test:run --group=analytics ``` Weitere Informationen zur Migration finden Sie in den Änderungsprotokollen im Quellcode-Repository.