1. Go to this page and download the library: Download il4mb/routing 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/ */
il4mb / routing example snippets
use Il4mb\Routing\Http\Method;
use Il4mb\Routing\Http\Request;
use Il4mb\Routing\Map\Route;
use Il4mb\Routing\Router;
final class AdminController
{
#[Route(Method::GET, '/admin/home', priority: 50)]
public function home()
{
return 'ok';
}
// Fallback route (only used if nothing else matches)
#[Route(Method::GET, '/{path.*}', fallback: true)]
public function notFound(string $path, Request $req, Response $res, callable $next)
{
return ['error' => 'not_found', 'path' => $path];
}
}
$router = new Router(options: [
// Production deployments typically disable this side-effect.
'manageHtaccess' => false,
// chain|first|error_on_ambiguous
'decisionPolicy' => 'first',
// Enable only while debugging.
'debugTrace' => true,
]);
$router->addRoute(new AdminController());
$response = $router->dispatch(new Request());
echo $response->send();
use Il4mb\Routing\Engine\DecisionPolicy;
use Il4mb\Routing\Engine\RouteDefinition;
use Il4mb\Routing\Engine\RouteTable;
use Il4mb\Routing\Engine\RouterEngine;
use Il4mb\Routing\Engine\RoutingContext;
use Il4mb\Routing\Engine\Matchers\HostMatcher;
use Il4mb\Routing\Engine\Matchers\PathPatternMatcher;
use Il4mb\Routing\Engine\Matchers\ProtocolMatcher;
$routes = [
new RouteDefinition(
id: 'proxy.payments.eu',
target: ['cluster' => 'payments-eu'],
matchers: [
new ProtocolMatcher('https'),
new HostMatcher('payments.example.com'),
new PathPatternMatcher('/v1/**'),
],
priority: 100,
),
];
$engine = new RouterEngine(new RouteTable($routes), policy: DecisionPolicy::FIRST);
$ctx = new RoutingContext(protocol: 'https', host: 'payments.example.com', path: '/v1/charge', method: 'GET');
$outcome = $engine->route($ctx);
if ($outcome->ok) {
$selected = $outcome->decision->selected[0] ?? null;
// $selected->target contains your adapter payload
}