sunder/http-router

dev-master 2024-11-06 09:40 UTC

This package is auto-updated.

Last update: 2025-06-06 11:13:11 UTC


README

Route definition

$router = new \Sunder\Http\Router();
$router->addRoute(
    method: "GET",
    route:  '/some/path', 
    cb:     function (\Sunder\Http\Request\Request $request): \Sunder\Http\Request\Response {
                /** !!!Important!!!
                *   Each route MUST return
                *   \Sunder\Http\Request\Response object 
                **/ 
                return new \Sunder\Http\Request\Response(
                    // Some code here
                )
            }
);

$response = $router->run(new \Sunder\Http\Request\Request(
    method: 'GET', 
    uri: '/some/path'
))

// ---------------------------
// One of possible ways to use
// ---------------------------
foreach ($response->headers as $header) {
    header($header);
}

echo $response->body;

Dynamic route definition

$router = new \Sunder\Http\Router();
$router->addRoute(
    method: "GET",
    route:  '/some/[dynamic]/', 
    cb:     function (\Sunder\Http\Request\Request $request): \Sunder\Http\Request\Response {
                /**
                * @var string 'some_dynamic_data' 
                */
                $var = $request->routeData['dynamic'];
                
                return new \Sunder\Http\Request\Response(
                    // Some code here
                )
            }
);

$response = $router->run(new \Sunder\Http\Request\Request(
    method: 'GET', 
    uri: '/some/some_dynamic_data/dynamic'
))

404 Route definition

By default, router has its own 404 handler (16 line)

But you can define your own

$router = new \Sunder\Http\Router();

// ...

$router->set404Handler(function (\Sunder\Http\Request\Request $request) {
    return new \Sunder\Http\Request\Response(
        status: 404,
        body: 'Undefined route ...'
    )
});