ghostwriter / http
HTTP Client and Server abstraction for PHP.
Fund package maintenance!
0.1.0
2026-02-22 20:06 UTC
Requires
- php: ~8.4.0 || ~8.5.0
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- ghostwriter/clock: ^3.0.1
- ghostwriter/config: ^2.0.2
- ghostwriter/container: ^6.0.1
- ghostwriter/event-dispatcher: ^6.0.2
- ghostwriter/json: ^3.0.1
- guzzlehttp/guzzle: ^7.10.0
- laminas/laminas-diactoros: ^3.8.0
- psr/http-client: ^1.0.3
- psr/http-factory: ^1.1.0
- psr/http-message: ^2.0
- psr/http-server-handler: ^1.0.2
- psr/http-server-middleware: ^1.0.2
Requires (Dev)
- ext-xdebug: *
- ghostwriter/coding-standard: dev-main
- mockery/mockery: ^1.6.12
- phpunit/phpunit: ^13.0.5
- symfony/var-dumper: ^8.0.4
This package is auto-updated.
Last update: 2026-03-05 15:28:44 UTC
README
HTTP Client and Server abstraction for PHP.
Warning
This project is not finished yet, work in progress.
Installation
You can install the package via composer:
composer require ghostwriter/http
RFC
- RFC3864: Registration Procedures for Message Header Fields
- RFC5234: Augmented BNF for Syntax Specifications
- RFC9110: HTTP Semantics
- RFC9111: HTTP Caching
- RFC9112: HTTP/1.1
- RFC9113: HTTP/2
- RFC9114: HTTP/3
Usage
$router = Router::new(); $router->addRoute('GET', '/', HomeHandler::class, [GuestMiddleware::class]); $router->get('/about', AboutHandler::class, [GuestMiddleware::class]); $router->get('/auth/github', GitHubLoginHandler::class, [GuestMiddleware::class], 'auth.login.github'); // create, read, edit, update, store, delete, view, show $router->middleware([GuestMiddleware::class], function($router){ $router->get('/auth/login', LoginCreateHandler::class, 'auth.login.create'); $router->post('/auth/login', LoginStoreHandler::class, 'auth.login.store'); $router->get('/auth/register', RegisterCreateHandler::class, 'auth.register.create'); $router->post('/auth/register', RegisterStoreHandler::class, 'auth.register.store'); $router->get('/posts', PostIndexHandler::class, 'members.index'); $router->get('/posts/{post}/{?slug}', PostShowHandler::class, 'members.show'); }); $router->middleware([AuthMiddleware::class], function($router){ $router->get('/users', MembersIndexHandler::class, 'members.index'); $router->get('/users/{member}', MemberShowHandler::class, 'members.show'); $router->get('/posts/create', PostCreateHandler::class, 'members.create'); $router->post('/posts', PostStoreHandler::class, 'members.store'); $router->get('/posts/{post}/edit', PostEditHandler::class, 'members.edit'); $router->put('/posts/{post}', PostUpdateHandler::class, 'members.update'); $router->delete('/posts/{post}', PostDeleteHandler::class, 'members.delete'); }); $request = ServerRequest::new(); $server = Server::new($router); // RequestHandler $server->handle($request); // Response
Changelog
Please see CHANGELOG.md for more information what has changed recently.
Security
If you discover any security related issues, please email nathanael.esayeas@protonmail.com or create a Security Advisory instead of using the issue tracker.
License
The BSD-3-Clause. Please see License File for more information.