<?php

namespace Core;

use PDO;

class Database
{
    private static self $instance;
    protected static PDO $db;

    /**
     * Singleton.
    */
    private function __construct() {
        mysql_select_db(Config::get('db_name'), mysql_connect(Config::get('db_host'), Config::get('db_user'), Config::get('db_password')));
        mysql_query('SET NAMES utf8mb4');
    }

    /**
     * Для совместимости со старыми функциями mysql_*.
     * @return Database
     */
    public static function init(): Database
    {
        if (!isset(self::$instance)) {
            self::$instance = new static();
        }
        return self::$instance;
    }

    /**
     * Новое подключение к БД.
     * @return PDO
     */
    public static function pdoinit(): PDO
    {
        return new PDO(
            'mysql:host=' . Config::get('db_host') . ';dbname=' . Config::get('db_name'),
            Config::get('db_user'),
            Config::get('db_password'),
            [
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4",
                PDO::ATTR_STRINGIFY_FETCHES => false,
                PDO::ATTR_EMULATE_PREPARES => false,
            ]
        );
    }
}