icicleio / http
Asynchronous HTTP component for Icicle.
Installs: 41 044
Dependents: 6
Suggesters: 0
Security: 0
Stars: 61
Watchers: 14
Forks: 5
Open Issues: 11
Requires
- icicleio/dns: ^0.6
- icicleio/icicle: ^0.9.1
- icicleio/log: ^0.1
- icicleio/socket: ^0.5.2
- icicleio/stream: ^0.5.3
Requires (Dev)
- mockery/mockery: ^0.9
- phpunit/phpunit: ^4.8
- symfony/yaml: ^2.7
This package is auto-updated.
Last update: 2024-12-14 03:54:07 UTC
README
Asynchronous, non-blocking HTTP/1.1 client and server.
This library is a component for Icicle that provides an HTTP/1.1 server and client implementations. Like other Icicle components, this library uses Coroutines built from Awaitables and Generators to make writing asynchronous code more like writing synchronous code.
Documentation and Support
Requirements
- PHP 5.5+ for v0.3.x branch (current stable) and v1.x branch (mirrors current stable)
- PHP 7 for v2.0 (master) branch supporting generator delegation and return expressions
Suggested
- openssl extension: Required to create HTTPS servers or make requests over HTTPS.
Installation
The recommended way to install is with the Composer package manager. (See the Composer installation guide for information on installing and using Composer.)
Run the following command to use this library in your project:
composer require icicleio/http
You can also manually edit composer.json
to add this library as a project requirement.
// composer.json { "require": { "icicleio/http": "^0.3" } }
Example
The example below creates a simple HTTP server that responds with Hello, world!
to every request.
#!/usr/bin/env php <?php require '/vendor/autoload.php'; use Icicle\Http\Message\{BasicResponse, Request, Response}; use Icicle\Http\Server\{RequestHandler, Server}; use Icicle\Socket\Socket; use Icicle\Loop; $server = new Server(new class implements RequestHandler { public function onRequest(Request $request, Socket $socket) { $response = new BasicResponse(Response::OK, [ 'Content-Type' => 'text/plain', ]); yield from $response->getBody()->end('Hello, world!'); yield $response; } public function onError($code, Socket $socket) { return new BasicResponse($code); } }); $server->listen(8080); Loop\run();