Protokoll #32340

ID32340
Zeitstempel2026-01-02 11:07:17.728542
Clientroot
IP145.224.72.245
Modellclaude-sonnet-4-20250514
Statuscompleted
Tokens497 (Input: 23, Output: 474)
Dauer18148 ms
Request-Zeit2026-01-02 11:07:17.728542
Response-Zeit2026-01-02 11:07:35.876640

Request

{
    "event": "UserPromptSubmit",
    "prompt": "erkläre databasefactory - ist das besser als pdo?"
}

Response

{
    "assistant_response": "## DatabaseFactory vs PDO\n\n**Kein Entweder-Oder** - sie arbeiten zusammen:\n\n```\n┌─────────────────┐     ┌─────────────┐     ┌──────────┐\n│ DatabaseFactory │ --> │  Database   │ --> │   PDO    │\n│   (Ersteller)   │     │  (Wrapper)  │     │ (Driver) │\n└─────────────────┘     └─────────────┘     └──────────┘\n      Pattern              Klasse            PHP-Extension\n```\n\n### PDO = Der Treiber\n```php\n\/\/ PDO ist die Low-Level-Verbindung\n$pdo = new PDO(\"mysql:host=localhost;dbname=test\", \"user\", \"pass\");\n$pdo->query(\"SELECT * FROM users\");\n```\n\n### Factory = Das Erstellungsmuster\n```php\nclass DatabaseFactory {\n    public static function create(string $type): DatabaseInterface {\n        return match($type) {\n            'mysql'  => new MySQLDatabase(),   \/\/ nutzt PDO intern\n            'sqlite' => new SQLiteDatabase(),  \/\/ nutzt PDO intern\n            'mock'   => new MockDatabase(),    \/\/ für Tests\n        };\n    }\n}\n\n\/\/ Verwendung\n$db = DatabaseFactory::create('mysql');\n```\n\n### Warum Factory zusätzlich zu PDO?\n\n| Aspekt | Nur PDO | Mit Factory |\n|--------|---------|-------------|\n| Konfiguration | Überall verstreut | Zentralisiert |\n| Testbarkeit | Schwer zu mocken | MockDatabase möglich |\n| Wechsel DB-Typ | Viele Stellen ändern | Eine Stelle |\n| Credentials | Bei jedem `new PDO()` | Einmal in Factory |\n\n### Praxis-Beispiel\n```php\n\/\/ Ohne Factory - PDO überall\nclass UserRepository {\n    public function __construct() {\n        $this->pdo = new PDO(\"mysql:...\", \"user\", \"pass\"); \/\/ Hardcoded!\n    }\n}\n\n\/\/ Mit Factory - sauber getrennt\nclass UserRepository {\n    public function __construct(DatabaseInterface $db) {\n        $this->db = $db;  \/\/ Injiziert, testbar\n    }\n}\n\n\/\/ Anwendung\n$db = DatabaseFactory::create('mysql');\n$repo = new UserRepository($db);\n```\n\n**Fazit:** PDO ist der Motor, Factory ist die Werkstatt die den Motor einbaut. Beides zusammen = saubere Architektur."
}
← Vorheriger Zur Liste Nächster →