This commit is contained in:
2025-12-16 20:20:08 +08:00
parent 0dcd548645
commit ee1a5a993d
9 changed files with 142 additions and 29 deletions
+16 -1
View File
@@ -5,6 +5,7 @@ namespace Database\Base;
class PDO extends \PDO
{
readonly public string $driver;
/**
* @param string $database
@@ -12,6 +13,7 @@ class PDO extends \PDO
* @param string $username
* @param string $password
* @param array $options
* @param string $driver
*/
public function __construct(
readonly public string $database,
@@ -19,10 +21,23 @@ class PDO extends \PDO
readonly public string $username,
readonly public string $password,
readonly public array $options,
string $driver = 'mysql',
)
{
parent::__construct('mysql:dbname=' . $this->database . ';host=' . $this->host, $this->username, $this->password, $this->options);
$this->driver = strtolower($driver);
$dsn = $this->buildDsn();
parent::__construct($dsn, $this->username, $this->password, $this->options);
}
/**
* @return string
*/
private function buildDsn(): string
{
return match ($this->driver) {
'pgsql', 'postgresql' => 'pgsql:host=' . $this->host . ';dbname=' . $this->database,
default => 'mysql:dbname=' . $this->database . ';host=' . $this->host,
};
}
}