HTTP Client and Server abstraction for PHP.
Warning
This project is not finished yet, work in progress.
You can install the package via composer:
composer require ghostwriter/http
- 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
$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
Please see CHANGELOG.md for more information what has changed recently.
If you discover any security related issues, please email [email protected]
or create a Security Advisory instead of using the issue tracker.
The BSD-3-Clause. Please see License File for more information.