pdo = $pdo; } public static function fromConfig(array $config): self { $database = $config['database'] ?? []; $host = (string) ($database['host'] ?? '127.0.0.1'); $port = (string) ($database['port'] ?? '5432'); $name = (string) ($database['name'] ?? 'spreadsheet_importer'); $user = (string) ($database['user'] ?? 'postgres'); $password = (string) ($database['password'] ?? ''); $sslMode = (string) ($database['sslmode'] ?? 'prefer'); $pdo = new PDO( sprintf('pgsql:host=%s;port=%s;dbname=%s;sslmode=%s', $host, $port, $name, $sslMode), $user, $password, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ] ); return new self($pdo); } public function pdo(): PDO { return $this->pdo; } }