netrivet/wp-router

A simple router for WordPress plugins and themes

6.0.0 2022-02-03 19:14 UTC

This package is not auto-updated.

Last update: 2023-02-04 08:57:52 UTC


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