Parable Routing is a fast, intuitive url routing library.
Php 8.0+ and composer are required.
$ composer require parable-php/routing
$router = new Router();
$route1 = new Route(
['GET'],
'simple-route',
'route/simple',
[Controller::class, 'actionName']
);
$route2 = new Route(
['GET', 'POST'],
'param-route',
'route/{param}/hello',
function (string $param) {
echo 'Hello, ' . $username . '!';
}
);
$router->addRoutes($route1, $route2);
$match = $router->match('GET', 'route/devvoh/hello');
echo $match->getName();
This would echo param-route
.
Routing does not provide a direct way of executing a route, but it's easy enough:
$callable = $match->getCallable();
$callable(...$match->getParameterValues()->getAll());
For more free-form metadata you want to attach to a Route
, you can use metadata:
$route = new Route(
['GET'],
'simple-route',
'route/simple',
[Controller::class, 'actionName'],
[
'metadata' => 'enabled'
]
);
$route->getMetadataValue('metadata'); // returns 'enabled'
You can use this to add template paths to a route, whether it should be visible to admins only, etc.
Any suggestions, bug reports or general feedback is welcome. Use github issues and pull requests, or find me over at devvoh.com.
All Parable components are open-source software, licensed under the MIT license.