Router Package
HTTP router with parameter extraction.
Installation
bash
composer require lighthouse/routerBasic Usage
php
use Lighthouse\Router\Router;
$router = new Router();
$router->get('/', function () {
return 'Home';
});
$router->post('/users', function () {
return 'Create user';
});HTTP Methods
php
$router->get('/path', $handler);
$router->post('/path', $handler);
$router->put('/path', $handler);
$router->patch('/path', $handler);
$router->delete('/path', $handler);
$router->options('/path', $handler);
$router->head('/path', $handler);
// Multiple methods
$router->match(['GET', 'POST'], '/path', $handler);
// All methods
$router->any('/path', $handler);Route Parameters
php
$router->get('/users/{id}', function (string $id) {
return "User: {$id}";
});
$router->get('/posts/{post}/comments/{comment}', function ($post, $comment) {
return "Post {$post}, Comment {$comment}";
});Route Groups
php
$router->group('/api', function ($router) {
$router->get('/users', $handler); // /api/users
$router->get('/posts', $handler); // /api/posts
});
// Nested groups
$router->group('/api', function ($router) {
$router->group('/v1', function ($router) {
$router->get('/users', $handler); // /api/v1/users
});
});Named Routes
php
$router->get('/users/{id}', $handler)->name('users.show');
// Generate URL
$url = $router->url('users.show', ['id' => 123]);
// /users/123Dispatching
php
use Lighthouse\Http\ServerRequest;
$request = ServerRequest::fromGlobals();
try {
$match = $router->dispatch($request);
$handler = $match->getHandler();
$params = $match->getParameters();
} catch (RouteNotFoundException $e) {
// 404
} catch (MethodNotAllowedException $e) {
// 405
$allowed = $e->getAllowedMethods();
}Route Match
php
$match = $router->dispatch($request);
$match->getRoute(); // Route object
$match->getHandler(); // The handler
$match->getParameters(); // ['id' => '123']
$match->getParameter('id', 'default');