← Code-Übersicht

PdoConnectionFactory.php

Pfad: src/Infrastructure/Persistence/PdoConnectionFactory.php

Ext: php

Größe: 1180 Bytes

Geändert: 2026-07-15 16:12:39+02

<?php
declare(strict_types=1);

namespace Demo\Infrastructure\Persistence;

use Demo\Infrastructure\Config\DatabaseCredentials;
use PDO;

/**
 * Erzeugt PDO-Verbindungen aus injizierten Credentials.
 * Einzige Stelle, die PDO instanziiert (SRP).
 */
final class PdoConnectionFactory
{
    /** @var DatabaseCredentials Injizierte Verbindungsdaten. */
    private DatabaseCredentials $credentials;

    /**
     * Nimmt die Verbindungsdaten entgegen.
     *
     * @param DatabaseCredentials $credentials Verbindungsparameter der Datenbank.
     */
    public function __construct(DatabaseCredentials $credentials)
    {
        $this->credentials = $credentials;
    }

    /**
     * Baut eine streng konfigurierte PDO-Verbindung auf.
     *
     * @return PDO Verbindung mit Exception-Fehlermodus und echten Prepared Statements.
     */
    public function create(): PDO
    {
        return new PDO(
            $this->credentials->dsn,
            $this->credentials->user,
            $this->credentials->password,
            [
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_EMULATE_PREPARES => false,
            ]
        );
    }
}