PHP 8.4: Curl: curl_version() поддержка feature_list
curl_version
возвращает дополнительный ключ массива feature_list
, содержащий массив функций Curl и информацию о том, поддерживаются они или нет.Функция curl_version
в расширении Curl возвращает ассоциативный массив, содержащий информацию о версии и сборке Curl. Сюда входит версия Curl, имя и версия библиотеки SSL, версии Brotli и libz, список протоколов, поддерживаемых сборкой Curl, и битовая маска всех функций, поддерживаемых Curl.
Битовая маска возможностей не интуитивно понятна, для того, чтобы обнаружить и проверить, поддерживается ли та или иная возможность (например, HTTP/2, HSTS и т.д.) в Curl.
В PHP 8.4 функция curl_version
возвращает дополнительный ключ массива feature_list
, содержащий массив функций Curl и информацию о том, поддерживаются они или нет.
curl_version();
[
"version_number" => 524801,
"age" => 10,
+ "features" => 1438631837,
+ "feature_list" => [
+ "AsynchDNS" => true,
+ "CharConv" => false,
+ "Debug" => false,
+ // ...
+ "HTTP2" => true,
+ "HTTPS_PROXY" => true,
+ "BROTLI" => true,
+ "ALTSVC" => true,
+ "HTTP3" => false,
+ "ZSTD" => true,
+ "HSTS" => true,
+ // ...
+ ],
"ssl_version_number" => 0,
"version" => "8.2.1",
"host" => "x86_64-pc-linux-gnu",
// ...
]
Список функций представляет простой массив ключ-значение, где ключ — это имя функции, а значение — это логическое значение, указывающее на то, поддерживается ли данная функция или нет.
Это делает его более читабельным при проверке того, поддерживаются ли определённые функции в Curl.
Например, для проверки поддержки HTTP/3 требовалось проверить наличие константы CURL_VERSION_
, а также проверить битовую маску features
. В PHP 8.4 и более поздних версиях для этого достаточно проверить массив feature_list
:
// Проверка, поддерживает ли Curl HTTP/3
-defined('CURL_VERSION_HTTP3') && (curl_version()['features'] & CURL_VERSION_HTTP3 === CURL_VERSION_HTTP3)
+!empty(curl_version()['feature_list']['HTTP3'])
Связанные изменения
Влияние на обратную совместимость
Вызовы функции curl_version()
в PHP 8.4 и более поздних версиях возвращают новое значение feature_list
. Эта функция не может быть перенесена на более ранние версии PHP.
Для кросс-версионной совместимости при проверке наличия определённой функции Curl проверьте, объявлена ли соответствующая константа CURL_VERSION_*
, и содержит ли битовая маска curl_version()['feature']
это значение.