Common utils to create PSR-15 middleware packages


Latest Version on Packagist Software License Build Status Quality Score Total Downloads SensioLabs Insight

Common utilities used by the middlewares' packages:


This package is installable and autoloadable via Composer as middlewares/utils.

composer require middlewares/utils


Used to create psr-7 instances of ServerRequestInterface, ResponseInterface, StreamInterface and UriInterface. Detects automatically Diactoros, Guzzle, Slim and Nyholm/psr7 but you can register a different factory using the psr/http-factory interface.

use Middlewares\Utils\Factory;

$request = Factory::createServerRequest('GET', '/');
$response = Factory::createResponse(200);
$stream = Factory::createStream('Hello world');
$uri = Factory::createUri('');

// By default, detect diactoros, guzzle, slim and nyholm (in this order of priority),
// but you can change it and add other classes

//And also register directly an initialized factory
Factory::setResponseFactory(new FooResponseFactory());

$fooResponse = Factory::createResponse();

//Get the PSR-17 factory used
$uriFactory = Factory::getUriFactory();
$uri = $uriFactory->createUri('');


Minimalist PSR-15 compatible dispatcher. Used for testing purposes.

use Middlewares\Utils\Dispatcher;

$response = Dispatcher::run([
    new Middleware1(),
    new Middleware2(),
    new Middleware3(),
    function ($request, $next) {
        $response = $next->handle($request);
        return $response->withHeader('X-Foo', 'Bar');


To resolve and execute a callable. It can be used as a middleware, server request handler or a callable:

use Middlewares\Utils\CallableHandler;

$callable = new CallableHandler(function () {
    return 'Hello world';

$response = $callable();

echo $response->getBody(); //Hello world


General purpose exception used to represent HTTP errors.

use Middlewares\Utils\HttpErrorException;

$exception = HttpErrorException::create(500, [
    'problem' => 'Something bad happened',

// Additional context can be get and set on the exception
$context = $exception->getContext();


Common utilities shared between many middlewares like the ability to customize PSR-17 factories.

  • HasResponseFactory
  • HasStreamFactory

Please see CHANGELOG for more information about recent changes and CONTRIBUTING for contributing details.

The MIT License (MIT). Please see LICENSE for more information.