phpgt / curl
cURL 对象封装器。
v3.1.1
2023-04-29 17:28 UTC
Requires
- php: >=8.1
- ext-curl: *
- ext-json: *
- phpgt/json: ^1.2
Requires (Dev)
- phpmd/phpmd: ^2.13
- phpstan/phpstan: ^1.9
- phpunit/phpunit: ^10.0
- squizlabs/php_codesniffer: ^3.7
This package is auto-updated.
Last update: 2024-09-12 06:44:10 UTC
README
此库通过对象封装 PHP 的原生 cURL 扩展函数,以提高代码的可读性和可测试性。
为什么?我们希望为我们的 PHP 实现 Web 的 fetch API,即使用 cURL 创建异步 HTTP 调用并使用承诺的 PHP.Gt/Fetch,打下面向对象的基础。
示例用法:从远程源获取 JSON 对象
在处理 HTTP 调用时,处理 JSON 是极其常见的。此库通过缓冲 exec()
调用的输出,以便以后使用 output()
或 outputJson()
方便地检索,从而减少了大量样板代码的需要。
使用 PHP.Gt/Curl 的示例
$curl = new Curl("https://catfact.ninja/fact"); $curl->exec(); $json = $curl->outputJson(); echo "Here's a cat fact: {$json->getString("fact")}"; echo PHP_EOL; echo "The fact's length is {$json->getInt("length")} characters."; echo PHP_EOL;
使用 PHP 的原生 curl_*
函数的相同示例
// Using native functionality to achieve the same: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://catfact.ninja/fact"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); if(false === $result) { die("CURL error: " . curl_error($ch)); } $json = json_decode($result); if(is_null($json)) { die("JSON decoding error: " . json_last_error_msg()); } // Note: No type checks are made on the `fact` and `length` properties here. echo "Here's a cat fact: {$json->fact}"; echo PHP_EOL; echo "The fact's length is {$json->length} characters."; echo PHP_EOL;