<?php

declare(strict_types=1);

namespace App\Support\Compatibility;

/**
 * 部分 Windows / 精简 PHP 构建的 ext-curl 未导出 CURL_SSLVERSION_* 常量，
 * Guzzle Http 客户端在 supportsTls12() 等处会直接引用并报 Error。
 * 在 HTTP 请求发出前按 PHP 文档约定补齐数值常量（不增强 libcurl 实际 TLS 能力）。
 */
final class PhpCurlConstantCompat
{
    public static function register(): void
    {
        if (! extension_loaded('curl')) {
            return;
        }

        /** @var array<string, int> $constants */
        $constants = [
            'CURL_SSLVERSION_DEFAULT' => 0,
            'CURL_SSLVERSION_TLSv1' => 1,
            'CURL_SSLVERSION_SSLv2' => 2,
            'CURL_SSLVERSION_SSLv3' => 3,
            'CURL_SSLVERSION_TLSv1_0' => 4,
            'CURL_SSLVERSION_TLSv1_1' => 5,
            'CURL_SSLVERSION_TLSv1_2' => 6,
            'CURL_SSLVERSION_TLSv1_3' => 7,
        ];

        foreach ($constants as $name => $value) {
            if (! defined($name)) {
                define($name, $value);
            }
        }
    }
}
