caridea / dispatch
A shrimp of a PSR-15 compliant middleware dispatcher
Requires
- php: >=7.1.0
- psr/http-message: ^1.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- phpunit/phpunit: ^6.0.0
- psr/log: ^1.0
- zendframework/zend-diactoros: ^1.0
Suggests
- psr/log: Allows use of the Reporter middleware
Provides
This package is not auto-updated.
Last update: 2024-12-05 23:01:06 UTC
README
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.
This is its PSR-7 and PSR-15 compliant request handler, with a few middleware implementations.
Installation
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
psr/http-message
,psr/http-server-handler
, andpsr/http-server-middleware
.
Compliance
Releases of this library will conform to Semantic Versioning.
Our code is intended to comply with PSR-1, PSR-2, and PSR-4. If you find any issues related to standards compliance, please send a pull request!
Documentation
- Head over to Read the Docs
Examples
Just a few quick examples.
Runner
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);
A Runner
is immutable. You can use it more than once.
$runner = new \Caridea\Dispatch\Runner($middleware); $response1 = $runner->handle($request); $response2 = $runner->handle($request);
Priority Runner
We included an extension of the MiddlewareInterface
: 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
Middleware implementations we include.
Reporter
Use the Caridea\Dispatch\Middleware\Reporter
to capture Throwable
s, log them, and re-throw the exception. PSR-3 required.
Prototype
A simple middleware that returns a ResponseInterface
you provide.
See Also
- This blog post from Matthew Weier O'Phinney about why PSR-15 ditched the old pattern of "double pass" middleware with anonymous functions.