dev-develop
dev-develop http://www.berlioz-framework.comBerlioz Router
MIT
The Requires
The Development Requires
by Ronan Giron
Wallogit.com
2017 © Pedro Peláez
Berlioz Router
Berlioz Router is a PHP library for manage HTTP routes, respecting PSR-7 (HTTP message interfaces) standard., (*2)
You can install Berlioz Router with Composer, it's the recommended installation., (*3)
$ composer require berlioz/router
You can create simple route like this:, (*4)
use Berlioz\Router\Route;
$route = new Route('/path-of/my-route');
$route = new Route('/path-of/my-route/{attribute}/with-attribute');
Constructor arguments are:, (*5)
A route can be transformed to a group, only associate another route to them., (*6)
use Berlioz\Router\Route;
$route = new Route('/path');
$route->addRoute($route2 = new Route('/path2')); // Path will be: /path/path2
Children routes inherit parent route attributes, requirements, ..., (*7)
Route accept optional attributes, you need to wrap the optional part by brackets., (*8)
$route = new \Berlioz\Router\Route('/path[/optional-part/{with-attribute}]');
You can also define requirements directly in the path :, (*9)
$route = new \Berlioz\Router\Route('/path/{attributeName:\d+}');
$route = new \Berlioz\Router\Route('/path/{attributeName::int}');
Supported defined types:, (*10)
int (equivalent of \d+)float (equivalent of \d+(\.\d+))uuid4 (equivalent of [0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12})slug (equivalent of [a-z0-9]+(?:-[a-z0-9]+)*)md5 (equivalent of [0-9a-fA-F]{32})sha1 (equivalent of [0-9a-fA-F]{40})domain (equivalent of ([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6})The router is the main functionality in the package, it is defined by Router class. He is able to find the
good Route object according to a ServerRequestInterface object (see PSR-7)., (*11)
use Berlioz\Http\Message\ServerRequest;
use Berlioz\Router\Route;
use Berlioz\Router\Router;
// Create server request or get them from another place in your app
$serverRequest = new ServerRequest(...);
// Create router
$router = new Router();
$router->addRoute(
new Route('/path-of/my-route'),
new Route('/path-of/my-route/{attribute}/with-attribute')
);
$route = $router->handle($serverRequest);
| Options | Type | Description |
|---|---|---|
| X-Forwarded-Prefix | boolean/string | Default to false, true to use "X-Forwarded-Prefix" value or custom name of header |
You can generate a path with some parameters directly with Router object., (*12)
use Berlioz\Router\Exception\NotFoundException;
use Berlioz\Router\Router;
$router = new Router();
// ...add routes
try {
$path = $router->generate('name-of-route', ['attribute1' => 'value']);
} catch (NotFoundException $exception) {
// ... not found route
}
The return of method, is the path in string format or thrown an exception if not able to generate path (not all required parameters for example)., (*13)
You can be valid a ServerRequestInterface to known if a path can be treated by a route., (*14)
use Berlioz\Http\Message\ServerRequest; use Berlioz\Router\Router; $serverRequest = new ServerRequest(...); $router = new Router(); // ...add routes /** bool $valid Valid path ?*/ $valid = $router->isValid($serverRequest);
The return of method is a boolean value., (*15)
Berlioz Router
MIT