Skip to content

Parable Routing is a fast, intuitive url routing library.

License

Notifications You must be signed in to change notification settings

parable-php/routing

Repository files navigation

Parable Routing

Workflow Status Latest Stable Version Latest Unstable Version License

Parable Routing is a fast, intuitive url routing library.

Install

Php 8.0+ and composer are required.

$ composer require parable-php/routing

Usage

$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.

Contributing

Any suggestions, bug reports or general feedback is welcome. Use github issues and pull requests, or find me over at devvoh.com.

License

All Parable components are open-source software, licensed under the MIT license.