This repository has been archived on 2023-01-06. You can view files and clone it, but cannot push or open issues or pull requests.
web/app/core/Database.php

36 lines
1.0 KiB
PHP
Raw Normal View History

2022-01-20 21:23:21 +00:00
<?php
// Encapsulates a single connection to a database
// TODO: refactor and add different driver implementations
class Database
{
public object $conn; // Holds PDO connection object
public function __construct(array $config)
{
if ($config['name'] !== 'mysql') {
throw new Exception("Database error: ".$config['name']." is not implemented");
}
try {
$this->conn = $this->connectWithMySQL($config['args']);
} catch (PDOException $e) {
throw new PDOException("Database error: " . $e->getMessage());
}
}
private function connectWithMySQL(array $args): object
{
$host = $args['host'];
$database = $args['database'];
$charset = $args['charset'];
$user = $args['user'];
$password = $args['password'];
$dsn = "mysql:host=$host;dbname=$database;charset=$charset";
$options = [
PDO::ATTR_PERSISTENT => true,
];
return new PDO($dsn, $user, $password, $options);
}
}