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,
]
);
}
}