A shrimp of a PSR-15 compliant middleware dispatcher
Caridea is a miniscule PHP application library. This shrimpy fellow is what you'd use when you just want some helping hands and not a full-blown framework.
You can install this library using Composer:
$ composer require caridea/dispatch
- The master branch (version 3.x) of this project requires PHP 7.1 and depends on
Releases of this library will conform to Semantic Versioning.
- Head over to Read the Docs
Just a few quick examples.
You can use the
Runner to give it some middleware and let it handle your request.
$request = new \Zend\Diactoros\ServerRequest(); // I generally use zend-diactoros, but feel free to use whatever PSR-7 library you use $middleware = [ // your custom \Psr\Http\Server\MiddlewareInterface objects ]; $runner = new \Caridea\Dispatch\Runner($middleware); $response = $runner->handle($request);
Your final middleware should create and return a PSR-7
ResponseInterface. You can also provide one to the
Runner constructor and it handles it automatically.
$response = new \Zend\Diactoros\Response(); $runner = new \Caridea\Dispatch\Runner($middleware, $response); $response = $runner->handle($request);
Runner is immutable. You can use it more than once.
$runner = new \Caridea\Dispatch\Runner($middleware); $response1 = $runner->handle($request); $response2 = $runner->handle($request);
We included an extension of the
Caridea\Dispatch\Middleware\Prioritized. Using the
Caridea\Dispatch\PriorityRunner, you can provide middleware out of order, and they get invoked in order of priority.
$middleware = [ // your custom \Psr\Http\Server\MiddlewareInterface objects. // Any that implement Prioritized will get run in priority order, // Any others get run last, in insert order. ]; $runner = new \Caridea\Dispatch\PriorityRunner($middleware);
You can also use the
Caridea\Dispatch\Middleware\PriorityDelegate class to assign priority to an existing middleware implementation.
$middleware = new \Caridea\Dispatch\Middleware\PriorityDelegate($middleware, 123456);
Middleware implementations we include.
Caridea\Dispatch\Middleware\Reporter to capture
Throwables, log them, and re-throw the exception. PSR-3 required.
A simple middleware that returns a
ResponseInterface you provide.
- This blog post from Matthew Weier O'Phinney about why PSR-15 ditched the old pattern of "double pass" middleware with anonymous functions.