<?php
declare(strict_types = 1);

namespace Database;

use PDO;
use PDOException;

final class DB{
  private const MYSQL_INIT = <<<SQL
SET time_zone = "+00:00",
    sql_mode = "STRICT_ALL_TABLES,NO_ENGINE_SUBSTITUTION"
SQL;
  
  /**
   * @return PDO
   * @throws PDOException
   */
  public static function get(): PDO{
    static $db;
    
    if (!isset($db)){
      $db = new PDO(DB_DRIVER.':dbname='.DB_NAME.';host='.DB_HOST.';charset=utf8mb4', DB_USER, DB_PASSWORD, [
          PDO::MYSQL_ATTR_INIT_COMMAND => self::MYSQL_INIT,
          PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
          PDO::ATTR_EMULATE_PREPARES   => false,
      ]);
    }
    
    return $db;
  }
}

?>