{
"event": "UserPromptSubmit",
"prompt": "DI Konsistenz: Repositories dürfen nicht heimlich DatabaseFactory ziehen, wenn der Container existiert. Entweder alles per DI oder konsequent Factory. <-- antworte mir: wie ist es, wie soll es sein?"
}
{
"assistant_response": "## IST-Zustand (Aktuell)\n\n**Zwei inkonsistente Patterns:**\n\n```php\n\/\/ Pattern A: Optional DI mit heimlichem Fallback (13 Repos)\npublic function __construct(?PDO $pdo = null)\n{\n $this->pdo = $pdo ?? DatabaseFactory::content(); \/\/ ← Heimlich!\n}\n\n\/\/ Pattern B: Direkter Factory-Call, kein DI (7 Repos)\npublic function __construct()\n{\n $this->db = DatabaseFactory::content(); \/\/ ← Offen\n}\n```\n\n**services.php registriert zwar PDO:**\n```php\n$container->set('pdo.dev', fn () => DatabaseFactory::dev());\n$container->set('pdo.content', fn () => DatabaseFactory::content());\n```\n\n**Aber Repositories werden ohne PDO erstellt:**\n```php\n$container->set(TaskRepository::class, fn () => new TaskRepository()); \/\/ ← Kein PDO!\n```\n\n→ **Container hat PDO, nutzt es aber nicht. Repositories ziehen heimlich selbst.**\n\n---\n\n## SOLL-Zustand\n\n**Option A: Konsequent DI (empfohlen)**\n```php\n\/\/ Repository - PDO ist Pflicht\npublic function __construct(PDO $pdo) \/\/ Kein Default!\n{\n $this->pdo = $pdo;\n}\n\n\/\/ services.php - Container injiziert explizit\n$container->set(TaskRepository::class, fn (Container $c) => \n new TaskRepository($c->get('pdo.dev'))\n);\n```\n\n**Vorteile:**\n- Explizit, keine versteckten Abhängigkeiten\n- Testbar (Mock-PDO injizierbar)\n- Fehler sofort sichtbar wenn falsch verdrahtet\n\n**Option B: Konsequent Factory (einfacher)**\n```php\n\/\/ Repository - Factory intern, kein Parameter\npublic function __construct()\n{\n $this->pdo = DatabaseFactory::content();\n}\n\n\/\/ services.php - Kein PDO-Handling nötig\n$container->set(TaskRepository::class, fn () => new TaskRepository());\n```\n\n**Vorteile:**\n- Einfacher\n- Weniger Boilerplate\n\n**Nachteile:**\n- Schwer testbar\n- Versteckte Kopplung\n\n---\n\n## Empfehlung\n\n**Option A (Full DI)** - Container injiziert PDO, Repositories haben keine Fallbacks.\n\nSoll ich das umsetzen?"
}