33 lines
900 B
PHP
33 lines
900 B
PHP
<?php
|
|
|
|
class Database extends PDO
|
|
{
|
|
private static $instances = [];
|
|
|
|
protected function __construct($dsn, $username = null, $password = null, array $options = null)
|
|
{
|
|
parent::__construct($dsn, $username, $password, $options);
|
|
}
|
|
|
|
public static function getInstance(): Database
|
|
{
|
|
$cls = static::class;
|
|
if (!isset(self::$instances[$cls])) {
|
|
$dataAccess = Config::getDatabase();
|
|
self::$instances[$cls] = new static(
|
|
"mysql:host={$dataAccess["host"]};dbname={$dataAccess["database"]};charset={$dataAccess["charset"]}",
|
|
$dataAccess["user"],
|
|
$dataAccess["passwd"],
|
|
[
|
|
PDO::ATTR_PERSISTENT => false,
|
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
|
PDO::ATTR_EMULATE_PREPARES => false,
|
|
]
|
|
);
|
|
}
|
|
|
|
return self::$instances[$cls];
|
|
}
|
|
}
|