1. Go to this page and download the library: Download ingenioz-it/router library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ingenioz-it / router example snippets
use IngeniozIT\Router\RouteGroup;
use IngeniozIT\Router\Route;
use IngeniozIT\Router\Router;
// Create your routes
$routes = new RouteGroup([
Route::get('/hello', fn() => new Response('Hello, world!')),
Route::get('/bye', fn() => new Response('Goodbye, world!')),
]);
// Instantiate the router
/** @var Psr\Container\ContainerInterface $container */
$container = new Container();
$router = new Router($routes, $container);
// Handle the request
/** @var Psr\Http\Message\ServerRequestInterface $request */
$request = new ServerRequest();
/** @var Psr\Http\Message\ResponseInterface $response */
$response = $router->handle($request);
Route::get('/hello', fn() => new Response('Hello, world!'));
new RouteGroup([
Route::get('/hello', fn() => new Response('Hello, world!')),
Route::get('/bye', fn() => new Response('Goodbye, world!')),
]);
new RouteGroup([
Route::get('/', fn() => new Response('Welcome !')),
new RouteGroup([
Route::get('/hello', fn() => new Response('Hello, world!')),
Route::get('/hello-again', fn() => new Response('Hello again, world!')),
]),
Route::get('/bye', fn() => new Response('Goodbye, world!')),
]);
Route::get('/hello', fn() => new Response('Hello, world!'));
Route::get('/hello', function (ServerRequestInterface $request) {
return new Response('Hello, world!');
});
Route::get('/hello', function (ServerRequestInterface $request, RequestHandlerInterface $router) {
return new Response('Hello, world!');
});
use Psr\Http\Server\RequestHandlerInterface;
use Psr\Http\Server\ServerRequestInterface;
use Psr\Http\Server\ResponseInterface;
class MyHandler implements RequestHandlerInterface
{
public function handle(ServerRequestInterface $request): ResponseInterface
{
return new Response('Hello, world!');
}
}
Route::get('/hello', new MyHandler());
use Psr\Http\Server\MiddlewareInterface;
class MyHandler implements MiddlewareInterface
{
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
if (resourceDoesNotExist()) {
// We don't want this handler to continue processing the request,
// so we pass the responsability to the next handler
return $handler->handle($request);
}
/* ... */
}
}
$routes = new RouteGroup([
// This handler will be called first
Route::get('/{ressource}', fn() => new MyHandler()),
// This handler will be called next
Route::get('/{ressource}', fn() => new Response('Hello, world!')),
]);
Route::get('/hello', MyHandler::class);
class MyHandler implements RequestHandlerInterface
{
public function handle(ServerRequestInterface $request): ResponseInterface
{
$name = $request->getAttribute('name');
return new Response("Hello, $name!");
}
}
// Notice there is no name parameter in the route path
Route::get('/hello', MyHandler::class, with: ['name' => 'world']);
// This one will be parsed
$routes = new RouteGroup(
[
Route::get('/hello', MyHandler::class),
],
conditions: [
fn(ServerRequestInterface $request) => true,
],
);
// This one will NOT be parsed
$routes = new RouteGroup(
[
Route::get('/hello', MyHandler::class),
],
conditions: [
fn(ServerRequestInterface $request) => false,
],
);
class MyHandler implements RequestHandlerInterface
{
public function handle(ServerRequestInterface $request): ResponseInterface
{
$name = $request->getAttribute('name');
return new Response("Hello, $name!");
}
}
$routes = new RouteGroup(
[
Route::get('/hello', MyHandler::class),
],
conditions: [
// This condition will add the 'name' attribute to the request
fn(ServerRequestInterface $request) => ['name' => 'world'],
],
);
// This one will NOT be parsed
$routes = new RouteGroup(
[
Route::get('/hello', MyHandler::class),
],
conditions: [
fn(ServerRequestInterface $request) => true,
fn(ServerRequestInterface $request) => false,
],
);