PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]); $pdo->exec('PRAGMA foreign_keys = ON;'); $pdo->exec('PRAGMA journal_mode = WAL;'); $pdo->exec('PRAGMA busy_timeout = 3000;'); @chmod($dbPath, 0600); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); $pdo->sqliteCreateFunction( 'search_fold', static function (mixed $value): string { $text = mb_strtolower(trim((string) $value), 'UTF-8'); $text = strtr($text, ['œ' => 'oe', 'æ' => 'ae', 'ø' => 'o', 'ß' => 'ss']); $ascii = @iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $text); return $ascii === false ? $text : strtolower($ascii); }, 1, PDO::SQLITE_DETERMINISTIC, ); self::$pdo = $pdo; return $pdo; } public static function close(): void { self::$pdo = null; } }