1- # Simple HTTP cURL client for PHP 7 .1+ based on PSR-18
1+ # Simple HTTP cURL client for PHP 8 .1+ implementing PSR-18
22
33[ ![ Build Status] ( https://scrutinizer-ci.com/g/sunrise-php/http-client-curl/badges/build.png?b=master )] ( https://scrutinizer-ci.com/g/sunrise-php/http-client-curl/build-status/master )
44[ ![ Code Coverage] ( https://scrutinizer-ci.com/g/sunrise-php/http-client-curl/badges/coverage.png?b=master )] ( https://scrutinizer-ci.com/g/sunrise-php/http-client-curl/?branch=master )
55[ ![ Scrutinizer Code Quality] ( https://scrutinizer-ci.com/g/sunrise-php/http-client-curl/badges/quality-score.png?b=master )] ( https://scrutinizer-ci.com/g/sunrise-php/http-client-curl/?branch=master )
66[ ![ Total Downloads] ( https://poser.pugx.org/sunrise/http-client-curl/downloads?format=flat )] ( https://packagist.org/packages/sunrise/http-client-curl )
7- [ ![ Latest Stable Version] ( https://poser.pugx.org/sunrise/http-client-curl/v/stable?format=flat )] ( https://packagist.org/packages/sunrise/http-client-curl )
8- [ ![ License] ( https://poser.pugx.org/sunrise/http-client-curl/license?format=flat )] ( https://packagist.org/packages/sunrise/http-client-curl )
97
108---
119
1513composer require sunrise/http-client-curl
1614```
1715
18- ## QuickStart
16+ ## Quick Start
1917
2018``` bash
21- composer require sunrise/http-factory
19+ composer require sunrise/http-message
2220```
2321
2422``` php
2523use Sunrise\Http\Client\Curl\Client;
26- use Sunrise\Http\Factory \RequestFactory;
27- use Sunrise\Http\Factory \ResponseFactory;
24+ use Sunrise\Http\Message \RequestFactory;
25+ use Sunrise\Http\Message \ResponseFactory;
2826
2927$client = new Client(new ResponseFactory());
30- $request = (new RequestFactory) ->createRequest('GET', 'http ://php.net/');
28+ $request = (new RequestFactory()) ->createRequest('GET', 'https ://www. php.net/');
3129$response = $client->sendRequest($request);
3230
3331echo $response->getStatusCode(), PHP_EOL;
@@ -38,42 +36,45 @@ echo $response->getStatusCode(), PHP_EOL;
3836> https://www.php.net/manual/ru/curl.constants.php
3937
4038``` php
39+ use Sunrise\Http\Client\Curl\Client;
40+ use Sunrise\Http\Message\ResponseFactory;
41+
42+ use const CURLOPT_AUTOREFERER;
43+ use const CURLOPT_FOLLOWLOCATION;
44+
4145$client = new Client(new ResponseFactory(), [
42- \ CURLOPT_AUTOREFERER => true,
43- \ CURLOPT_FOLLOWLOCATION => true,
46+ CURLOPT_AUTOREFERER => true,
47+ CURLOPT_FOLLOWLOCATION => true,
4448]);
4549```
4650
4751### Parallel execution of multiple requests
4852
4953``` php
50- $requests = [
51- (new RequestFactory)->createRequest('GET', 'http://php.net/'),
52- (new RequestFactory)->createRequest('GET', 'http://php.net/'),
53- ] ;
54+ use Sunrise\Http\Client\Curl\Client;
55+ use Sunrise\Http\Client\Curl\MultiRequest;
56+ use Sunrise\Http\Message\ RequestFactory;
57+ use Sunrise\Http\Message\ResponseFactory ;
5458
5559$client = new Client(new ResponseFactory());
56- $responses = $client->sendRequests(...$request);
5760
58- foreach ($responses as $i => $response) {
59- // note that you can get the response's request by its index...
60- echo sprintf('%s => %d', $requests[$i]->getUri(), $response->getStatusCode()), PHP_EOL;
61+ $multiRequest = new MultiRequest(
62+ foo: (new RequestFactory())->createRequest('GET', 'https://www.php.net/'),
63+ bar: (new RequestFactory())->createRequest('GET', 'https://www.php.net/'),
64+ )
65+
66+ $responses = $client->sendRequest($multiRequest)->getResponses();
67+
68+ foreach ($responses as $key => $response) {
69+ // Note that you can get the response's request by its key...
70+ echo sprintf('%s => %d', $multiRequest->getRequests()[$key]->getUri(), $response->getStatusCode()), PHP_EOL;
6171}
6272```
6373
6474---
6575
66- ## Test run
76+ ## Tests
6777
6878``` bash
6979composer test
7080```
71-
72- ## Useful links
73-
74- * http://php.net/manual/en/intro.curl.php
75- * https://curl.haxx.se/libcurl/c/libcurl-errors.html
76- * https://www.php-fig.org/psr/psr-2/
77- * https://www.php-fig.org/psr/psr-7/
78- * https://www.php-fig.org/psr/psr-17/
79- * https://www.php-fig.org/psr/psr-18/
0 commit comments