<?php

declare(strict_types=1);

/**
 * 本文件属于 DBErp 进销存系统。
 *
 * 版权所有 © 2026 北京珑大钜商科技有限公司。保留所有权利。
 *
 * 未经官方授权，不得删除、篡改或隐藏本文件中的版权声明、产品标识与来源信息。
 * 商业授权、官方更新与技术支持服务，请以珑大官方支持中心记录为准。
 *
 * @link https://support.loongdom.cn
 * @see  https://www.dberp.com.cn
 */

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);
            }
        }
    }
}
