spiffy / spiffy-route
This package is abandoned and no longer maintained.
No replacement package was suggested.
Spiffy\Route is a light-weight, HHVM compatible, and dependency free router library.
1.0.0-alpha
2014-07-17 01:06 UTC
Requires
- php: >=5.4
Requires (Dev)
- phpunit/phpunit: ~4.0
- squizlabs/php_codesniffer: ~1.0
- twig/twig: ~1.15
This package is not auto-updated.
Last update: 2022-02-01 12:37:09 UTC
README
Installation
Spiffy\Route can be installed using composer which will setup any autoloading for you.
composer require spiffy/spiffy-route
Additionally, you can download or clone the repository and setup your own autoloading.
Adding routes
use Spiffy\Route\Router; $router = new Router(); // Basic route with name $router->add('foo', '/foo'); // matches /foo // Basic route with no name $router->add(null, '/foo'); // matches /foo // Route with tokens $router->add('foo', '/foo/{name}'); // matches /foo/bar // Router with optional tokens $router->add('foo', '/foo{/name?}'); // matches /foo or /foo/bar // Router with tokens and constraints $router->add('foo', '/foo/{id:\d+}-{slug}'); // matches /foo/1-bar but not /foo/baz-bar // The kitchen sink $router->add('foo', '/foo/{id:\d+}{-slug?:[a-zA-Z-_]+}'); // matches /foo/1, /foo/1-bar, /foo/1-BaR // does not match /foo/1-2
Assembling named routes to url's
use Spiffy\Route\Router; $router = new Router(); $router->add('foo', '/foo'); // outputs '/foo' echo $router->assemble('foo'); $router->add('foo', '/foo/{id:\d+}{-slug?:[a-zA-Z-_]+}'); // outputs '/foo/1' echo $router->assemble('foo', ['id' => 1]); // outputs '/foo/1-bar' echo $router->assemble('foo', ['id' => 1, 'slug' => 'bar']);
Matching routes
use Spiffy\Route\Router; $router = new Router(); $router->add('foo', '/foo'); // result is NULL echo $router->match('/bar'); // result is an instance of Spiffy\Route\RouteMatch $match = $router->match('/foo'); // output is 'foo' echo $match->getName(); $router->add('bar', '/bar/{id}'); // result is an instance of Spiffy\Route\RouteMatch $match = $router->match('/bar/1'); // output is 'bar' echo $match->getName(); // output is '1' echo $match->get('id'); // you can also have defaults for params that may not exist (output is 'foo') echo $match->get('does-not-exist', 'foo');
Default route parameters
use Spiffy\Route\Router; $router = new Router(); $router->add('foo', '/foo{/id?}', ['defaults' => ['id' => 1, 'controller' => 'foo-controller']]); $match = $router->match('/foo/1234'); // output is '1234' echo $match->get('id'); $match = $router->match('/foo'); // output is '1' echo $match->get('id'); // output is 'foo-controller' echo $match->get('controller');