A simple scoped router powered by query string parameters.
Though this has use outside of WordPress (for now), it is meant for use within the WordPress ecosystem as a means to add custom routes without specific page scripts.
The router matches a get or post request to a responder. A responder is a function or an invokable class.
use DownShift\WordPress\Router;
$router = new Router('my_scope');
// matches ?my_scope=/myroute
$router->post('/myroute', function () {
// do something here
});
// listen terminates via exit after route function executes
$router->listen();
You can also give a route definition an invokable class.
$router->post('/myroute', new InvokableClass());
// or a string if you prefer
$router->post('/myroute', 'DownShift\Responders\SomeClass');
Services in route functions are resolved using a PHP 5.3 friendly version of the Illuminate Container
$container = new Container();
$container->bind('SomeInterface', 'SomeImplementation');
$router = new Router('my_scope');
$router->bind($container);
$router->get('/test', function (SomeInterface $service) {
// do a thing with $service
});
If resolving a class, the constructor will have dependencies injected. Resolution of classes is only valid when using a string.
Tests are written using peridot, and can be run like so:
vendor/bin/peridot