Super Sharp Router
A simple, elegant routing library for PHP 5.4+., (*1)
Inspired by (and largely extracted from) Silex routing and built on Symfony components., (*2)
Installation
Using Composer:, (*3)
$ composer require allmarkedup/super-sharp-router
Examples
The hello world example:, (*4)
<?php
$router = new Amu\SuperSharp\Router();
$router->get('/hello', function(){
return 'Hello world!';
});
echo $router->match('/hello'); // Prints: Hello World!
Matching against the current request and returning a response object:, (*5)
<?php
use Amu\SuperSharp\Http\Response;
use Symfony\Component\Routing\Exception\RouteNotFoundException;
$router = new Amu\SuperSharp\Router();
$router->get('/', function(){
return new Response('This is the homepage');
});
try {
$response = $router->match(); // matches against the current request
} catch (ResourceNotFoundException $e) {
$response = new Response('No matching route found', 404);
}
$response->send();
HTTP-verb based methods, dynamic route parameters and fluent route configuration:, (*6)
<?php
$router->post('/articles', function(){
return 'Article added!';
});
$router->get('/articles/{slug}', function($slug){
return Example::find($slug);
});
$router->get('/users/{id}', function($id){
return Example::find($id);
})
->assert('id', '\d') // $id route parameter must be a digit
->requireHttps(); // Must be HTTPS
Running tests
Tests can be run using PHP Unit from the command line:, (*7)
$ vendor/bin/phpunit
The project also includes a Grunt watch task to run the PHP Unit tests when files are updated which you can use for your convenience., (*8)