lineten / php-curl-client
一个非常简单且轻量级的PHP cURL助手
v1.0.3
2021-05-07 12:54 UTC
Requires
- php: >=5.3.0
- psr/http-message: ^1.0
- slim/psr7: ^1.0
This package is not auto-updated.
Last update: 2024-09-21 05:18:32 UTC
README
解决的问题
- Guzzle很大且复杂。
- 随着功能的增加,文件对每个人来说都变得更大。
解决方案
- 自定义cURL抽象。
- 类不会增长,而是为每个新功能添加新的类。
遵循PSR-7
示例用法
<?php require 'vendor/autoload.php'; header('Content-Type: text/plain;charset=utf-8'); use Lineten\CurlClient\Constant\ContentType; use Lineten\CurlClient\Constant\HttpRequestHeader; use Lineten\CurlClient\CurlMulti; use Lineten\CurlClient\CurlClient; use Lineten\CurlClient\CurlResponse; use Lineten\CurlClient\Request\Authorization; use Lineten\CurlClient\Request\Headers; use Lineten\CurlClient\Request\Json; use Lineten\CurlClient\Request\QueryParams; // Sync request echo 'Sync request'.PHP_EOL; echo '================================='.PHP_EOL; $response = CurlClient::post('https://example.com') ->with(new Json(['key'=>'value'])) ->with(new QueryParams(['test' => 1])) ->with(new Authorization('Bearer: abc')) ->with(new Headers(['X-Test: test'])) ->send(); $status = $response->getStatusCode(); $body = $response->getBody()->__toString(); echo 'StatusCode: '.$status.PHP_EOL; foreach($response->getHeaders() as $name => $headers) { foreach($headers as $value){ echo $name.': '.$value.PHP_EOL; } } echo PHP_EOL.$body.PHP_EOL; // Async request echo PHP_EOL; echo PHP_EOL; echo 'Async request'.PHP_EOL; echo '================================='.PHP_EOL; $request = CurlClient::get('https://google.com') ->with(new Json(['key'=>'value'])) ->with(new QueryParams(['test' => 1])) ->with(new Authorization('Bearer: abc')); $multi = new CurlMulti; $multi = $multi->add($request, function(CurlResponse $response){ $status = $response->getStatusCode(); $body = $response->getBody()->__toString(); echo 'StatusCode: '.$status.PHP_EOL; foreach($response->getHeaders() as $name => $headers) { foreach($headers as $value){ echo $name.': '.$value.PHP_EOL; } } echo PHP_EOL.$body.PHP_EOL; }); $multi->send(); // Use built-in helper functions $response = CurlClient::post('https://example.com') ->withJson(['key'=>'value']) ->withQueryParams(['test' => 1]); // Call it as an instance $client = new CurlClient; $request = $client->post('https://example.com'); $request = $request->with(new Authorization('Bearer: abc')); /** @var CurlResponse $response PSR-7 Response with extra methods that are specific to curl */ $response = $request->send();