2017 © Pedro Peláez
 

library php-middleware-stack

Implementation of HTTP Middleware PSR-15 specification

image

idealo/php-middleware-stack

Implementation of HTTP Middleware PSR-15 specification

  • Friday, May 25, 2018
  • by zavalit
  • Repository
  • 10 Watchers
  • 17 Stars
  • 27 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 5 Versions
  • 29 % Grown

The README.md

PHP Middleware Stack

Build Status Maintainability Test Coverage Packagist, (*1)

This is an implementation of PSR-15 using the proposed Interface packages psr/http-server-middleware and psr/http-server-handler for PHP ^8.1 runtime environment., (*2)

It enables a sequential execution of middlewares that use a PSR-7 conform Response/Request implementation., (*3)

Install

composer require idealo/php-middleware-stack

Note: use Version ^2.0 for PHP < 8.1, (*4)

How to

use Idealo\Middleware\Stack;

$stack = new Stack(
    $defaultResponse,
    $middleware1,
    $middleware2,
    $middleware3
);

$stackResponse = $stack->handle($request);

Usage

idealo/php-middleware-stack provides the Idealo\Middleware\Stack class. All it has to know in order to be instantiable is:, (*5)

  • an instance of Psr\Http\Message\ResponseInterface as the default response
  • and middlewares, that implement the Psr\Http\Server\MiddlewareInterface

To perform a sequential processing of injected middlewares you have to call stack's handle method with:, (*6)

  • an instance of Psr\Http\Message\ServerRequestInterface.

By default stack's handle method returns the injected response object. If any middleware decides to answer on it's own, than the response object of this certain middleware is returned., (*7)

Stack implements Psr\Http\Server\RequestHandlerInterface., (*8)

For example

// you decide what middleware you want to put in a stack.
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Psr\Http\Server\MiddlewareInterface;

class TrickyMiddleware implements MiddlewareInterface
{
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler) : ResponseInterface
    {
        $requestBody = $request->getBody();
        try {
            // implement your middleware logic here  
        } catch (\Exception $exception){
            return new CustomExceptionResponse($exception);
        }

        return $handler->handle($request);
    }
}

class VeryTrickyMiddleware implements MiddlewareInterface
{
    ...
}

class LessTrickyMiddleware implements MiddlewareInterface
{
    ...
}

// you define your PSR7 conform response instance
$defaultResponse = new DefaultResponse();

// you put your request into a PSR7 conform way
$request = new ServerRequest();

// and here we are
$stack = new \Idealo\Middleware\Stack(
    $defaultResponse,
    new TrickyMiddleware(),
    new VeryTrickyMiddleware(),
    new LessTrickyMiddleware()
);

$stackResponse = $stack->handle($request);

// if everything goes well then
var_dump($stackResponse === $defaultResponse); // gives: true

The Versions

25/05 2018

dev-master

9999999-dev

Implementation of HTTP Middleware PSR-15 specification

  Sources   Download

Apache License 2.0

The Requires

 

The Development Requires

by Vsevolod Dolgopolov

middleware psr psr-7 stack http request response psr-15

25/05 2018

v1.0.0

1.0.0.0

Implementation of HTTP Middleware PSR-15 specification

  Sources   Download

Apache License 2.0

The Requires

 

The Development Requires

by Vsevolod Dolgopolov

middleware psr psr-7 stack http request response psr-15

13/04 2018

dev-use-new-psr15-interfaces

dev-use-new-psr15-interfaces

Implementation of HTTP Middleware PSR-15 specification

  Sources   Download

Apache License 2.0

The Requires

 

The Development Requires

by Vsevolod Dolgopolov

middleware psr psr-7 stack http request response psr-15

17/01 2017

v0.2.0

0.2.0.0

Implementation of HTTP Middleware PSR-15 specification

  Sources   Download

Apache License 2.0

The Requires

 

The Development Requires

by Vsevolod Dolgopolov

middleware psr psr-7 stack http request response psr-15

04/01 2017

v0.1.0

0.1.0.0

Implementation of HTTP Middleware PSR-15 specification

  Sources   Download

Apache License 2.0

The Requires

 

The Development Requires

by Vsevolod Dolgopolov