2017 © Pedro Peláez
 

library router

Mizmoz Router

image

mizmoz/router

Mizmoz Router

  • Monday, March 12, 2018
  • by ianchadwick
  • Repository
  • 1 Watchers
  • 0 Stars
  • 16 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 7 Versions
  • 14 % Grown

The README.md

Mizmoz / Router

A Simple Router for HTTP, (*1)

Aims

  • Be lightweight
  • Use PSR-7 HTTP message interfaces
  • Use PSR-15 HTTP server middleware (when it becomes standardised, maybe, it's a mess right now)
  • Resolution with PSR-11: Container interface

Basic Usage

// create a simple route
$route = Route::get('/', function (RequestInterface $request, ResponseInterface $response, ResultInterface $result) {
  return $response;
});

// init with a PSR-11 compatible container for class resolution
$dispatcher = new Router($route, $container);

// dispatch the route by passing a PSR-7 compatible Request
$response = $dispatcher->dispatch(new ServerRequest('GET', '/'));

exit($response->getBody()->getContents());

More examples

// class callback which will call the default process($request, $response, $next);
Route::get('/admin', AdminController::class);

// class callback with specific method
Route::get('/admin', [AdminController::class, 'home']);

// Route to app\actions\User\GetProfile.php
Route::get('/profile/{:userId}', 'User\GetProfile');

// A more complete route
Route::get('/', HomePage::class, function (RouteInterface $r) {
    // add some child routes
    $r->addRoute('GET', '/profile', ...);
});

// wildcard matching
Route::get('/app/*', AppController::class);

Routes with variables

// create the route with simple variable matching using :variable format
$route = new Route('GET', '/users/:userId', UserGet::class);

// get the variable
$userId = $route->match('GET', '/users/123')->getVariable('userId');

Get the route result object from the request either in the route endpoint or middleware

public function myMethod(ServerRequestInterface $request, ...)
{
    var_dump($request->getAttribute(Dispatcher::ATTRIBUTE_RESULT_KEY));
}

Middleware

// add global middleware
$router->addMiddleware(new EnsureSsl());

// add middlware to a route, middleware is added before the route definition by default
$router->get('admin', AdminController::class)
    ->addMiddleware(new EnsureSsl());

// add to all routes
$router->get('/', function (RouteInterface $r) {
    $r->get('/users', ...);
})->addMiddleware(new AclUser('admin'));

Roadmap

  • Add REST API helper for classes
  • Allow fallback / catch all / error routes

The Versions

12/03 2018

dev-master

9999999-dev

Mizmoz Router

  Sources   Download

MIT

The Requires

 

The Development Requires

by Ian Chadwick

12/03 2018

0.5.0

0.5.0.0

Mizmoz Router

  Sources   Download

MIT

The Requires

 

The Development Requires

by Ian Chadwick

30/08 2017

0.4.1

0.4.1.0

Mizmoz Router

  Sources   Download

MIT

The Requires

 

The Development Requires

by Ian Chadwick

30/08 2017

0.4.0

0.4.0.0

Mizmoz Router

  Sources   Download

MIT

The Requires

 

The Development Requires

by Ian Chadwick

30/08 2017

0.3.0

0.3.0.0

Mizmoz Router

  Sources   Download

MIT

The Requires

 

The Development Requires

by Ian Chadwick

30/08 2017

0.2.0

0.2.0.0

Mizmoz Router

  Sources   Download

MIT

The Requires

 

The Development Requires

by Ian Chadwick

30/08 2017

0.1.0

0.1.0.0

Mizmoz Router

  Sources   Download

MIT

The Requires

 

The Development Requires

by Ian Chadwick