- Notifications
You must be signed in to change notification settings - Fork74
A super lightweight PSR-7 implementation
License
Nyholm/psr7
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A super lightweight PSR-7 implementation. Very strict and very fast.
Description | Guzzle | Laminas | Slim | Nyholm |
---|---|---|---|---|
Lines of code | 3.300 | 3.100 | 1.900 | 1.000 |
PSR-7* | 66% | 100% | 75% | 100% |
PSR-17 | No | Yes | Yes | Yes |
HTTPlug | No | No | No | Yes |
Performance (runs per second)** | 14.553 | 14.703 | 13.416 | 17.734 |
* Percent of completed tests inhttps://github.com/php-http/psr7-integration-tests
** Benchmark with 50.000 runs. Seehttps://github.com/devanych/psr-http-benchmark (higher is better)
composer require nyholm/psr7
If you are using Symfony Flex then you get all message factories registered as services.
The PSR-7 objects do not contain any other public methods than those defined inthePSR-7 specification.
Use the PSR-17 factory to create requests, streams, URIs etc.
$psr17Factory =new \Nyholm\Psr7\Factory\Psr17Factory();$request =$psr17Factory->createRequest('GET','http://tnyholm.se');$stream =$psr17Factory->createStream('foobar');
WithHTTPlug or any other PSR-18 (HTTP client) you may sendrequests like:
composer require kriswallsmith/buzz
$psr17Factory =new \Nyholm\Psr7\Factory\Psr17Factory();$psr18Client =new \Buzz\Client\Curl($psr17Factory);$request =$psr17Factory->createRequest('GET','http://tnyholm.se');$response =$psr18Client->sendRequest($request);
Thenyholm/psr7-server
package can be usedto create server requests from PHP superglobals.
composer require nyholm/psr7-server
$psr17Factory =new \Nyholm\Psr7\Factory\Psr17Factory();$creator =new \Nyholm\Psr7Server\ServerRequestCreator($psr17Factory,// ServerRequestFactory$psr17Factory,// UriFactory$psr17Factory,// UploadedFileFactory$psr17Factory// StreamFactory);$serverRequest =$creator->fromGlobals();
composer require laminas/laminas-httphandlerrunner
$psr17Factory =new \Nyholm\Psr7\Factory\Psr17Factory();$responseBody =$psr17Factory->createStream('Hello world');$response =$psr17Factory->createResponse(200)->withBody($responseBody);(new \Laminas\HttpHandlerRunner\Emitter\SapiEmitter())->emit($response);
This package is currently maintained byTobias Nyholm andMartijn van der Ven. They have decided that thegoal of this library should be to provide a super strict implementation ofPSR-7 that is blazing fast.
The package will never include any extra features nor helper methods. All our classesand functions exist because they are required to fulfill the PSR-7 specification.
About
A super lightweight PSR-7 implementation