* @copyright 2025-2026 Vateron Media * @link https://github.com/Vateron-Media/XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ class DatabaseFactory { /** @var DatabaseHandler|null */ private static $instance; /** * Сохраняет экземпляр DatabaseHandler в singleton-реестре. */ public static function set(DatabaseHandler $db): void { self::$instance = $db; } /** * Возвращает текущий DatabaseHandler. */ public static function get(): ?DatabaseHandler { return self::$instance; } /** * Создаёт DatabaseHandler из config.ini и кладёт в global $db + singleton. */ public static function connect() { global $db; if (is_object($db) && method_exists($db, 'ping') && $db->ping()) { self::$instance = $db; return; } if (is_object($db)) { $db->close_mysql(); $db = null; } $db = new DatabaseHandler(); self::$instance = $db; } /** * Закрывает глобальное подключение к БД. */ public static function close() { global $db; if (is_object($db)) { $db->close_mysql(); $db = null; } self::$instance = null; } }