xicrow / php-curl
PHP 的 cURL 封装和工具
1.0.0
2022-09-17 11:11 UTC
Requires
- php: ^7.4
- ext-curl: *
This package is not auto-updated.
Last update: 2024-09-15 18:57:23 UTC
README
PHP 的 cURL 封装和工具
注意:早期版本仍可能发生重大更改
安装
推荐通过 Composer 安装。
composer require xicrow/php-curl
或者直接添加到 composer.json
{ "require": { "xicrow/php-curl": "~1.0" } }
示例
请求
创建新的 Request
$request = new Request();
在 Request
构造函数上设置 cUrl 选项
$request = new Request([ CURLOPT_URL => 'example.com', CURLOPT_USERAGENT => 'Mozilla/4.0', CURLOPT_TIMEOUT => 5, ]);
通过 CurlOptions
实例在 Request
上设置 cUrl 选项
$request->curlOptions()->set(CURLOPT_URL, 'example.com')->set(CURLOPT_USERAGENT, 'Mozilla/4.0'); $request->curlOptions()->set([ CURLOPT_TIMEOUT => 5, CURLOPT_FOLLOWLOCATION => true, CURLOPT_MAXREDIRS => 3, ]);
响应
从执行 Request
获取 Response
$response = $request->execute();
从 Response
获取正文
$response->body();
从 Response
上的 Headers
实例获取所有头信息
$response->headers()->get();
从 Response
上的 Headers
实例获取特定头信息
$response->headers()->getHttpStatusCode(); $response->headers()->get('Http-Status-Code'); $response->headers()->get([ 'Http-Status-Code', 'Http-Status-Message', ]);
批量处理
使用选项创建新的 Batch
$batch = new Batch([ 'max_concurrent_requests' => 5, ]);
一次添加一个 Request
$batch->addRequest(new Request());
或者一次性添加多个 Request
$batch->addRequests([ new Request(), new Request(), new Request(), ]);
在 Batch
上设置 CurlOptions
,这将与 Request
上的 CurlOptions
合并
$batch->curlOptions()->set([ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_PORT => 80, ]);
执行 Batch
并循环处理 Request
和 Response
注意:有几种方式可以匹配 Request
和 Response
,这主要是为了说明目的
$batch->execute(); foreach ($batch->getRequests() as $requestIndex => $request) { foreach ($batch->getResponses() as $responseIndex => $response) { // Skip if request and response index does not match if ($requestIndex != $responseIndex) { continue; } // ... } }
待办事项
- 单元测试
- 为
CurlOptions
添加更多实用方法 - 为
Headers
添加更多实用方法 - 可能重构
CurlOptions
和Headers
以及如何获取/设置它们
许可证
版权所有 © 2022 Jan Ebsen。许可协议为 MIT 许可。