downshiftorg / wp-router
A simple router for WordPress plugins and themes
Installs: 8 169
Dependents: 0
Suggesters: 0
Security: 0
Stars: 17
Watchers: 4
Forks: 1
Open Issues: 0
Requires
- php: >=5.3.0
- illuminate/container: ^8.82
Requires (Dev)
- peridot-php/leo: ^1.4
- peridot-php/peridot: ^1.15
README
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.
usage
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');
service injection
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
Tests are written using peridot, and can be run like so:
vendor/bin/peridot