A flexible PSR15 middleware dispatcher

2.0.1 2019-04-30 11:38 UTC

This package is auto-updated.

Last update: 2024-01-29 03:19:49 UTC


Build Status Coverage Status Latest Stable Version Scrutinizer

The package is a flexible PSR-15 middleware dispatcher for PSR-7 request message that help to create middlewares and dispatch.


Install via composer

composer require slince/middleware

Quick example

$dispatcher = new Slince\Middleware\Dispatcher([$middleware1, $middleware2]);

$response = $dispatcher->process(Zend\Diactoros\ServerRequestFactory::fromGlobals());

var_dump($response instanceof Psr\Http\Message\ResponseInterface);


Add middleware

Add PSR-15 middlewares to the queue

use Psr\Http\Message\ServerRequestInterface;
use Interop\Http\Server\MiddlewareInterface;
use Interop\Http\Server\RequestHandlerInterface;
use Zend\Diactoros\Response;

class MyMiddleware implements MiddlewareInteface
    public function process(ServerRequestInterface $request, RequestHandlerInterface $next) 
        $response = new Response();
        $response->getBody()->write('hello world');
        return $response;
$dispatcher = new Slince\Middleware\Dispatcher([
    new MyMiddleware()

Or add a callable function directly

$dispatcher->push(function(ServerRequestInterface $request, RequestHandlerInterface $next){
    return $delegate->process($request);


try {
    $response = $dispatcher->process(Zend\Diactoros\ServerRequestFactory::fromGlobals());
} catch (Slince\Middleware\Exception\MissingResponseException $exception) {

A MissingResponseException will be thrown if the middleware did not return a invalid response or the queue was exhausted


The MIT license. See MIT