项目作者: ellipsephp

项目描述 :
Psr-15 request handler decorators
高级语言: PHP
项目地址: git://github.com/ellipsephp/handlers.git
创建时间: 2018-02-22T10:38:08Z
项目社区:https://github.com/ellipsephp/handlers

开源协议:MIT License

下载


Request handler decorators

This package provides Psr-15 request handler decorators.

Require php >= 7.0

Installation composer require ellipse/handlers

Run tests ./vendor/bin/kahlan

Fallback request handler

An usual starting point for request handler decorators is to have a request handler returning a default response when its ->handle() method is called. This package provides an Ellipse\Handlers\FallbackRequestHandler class implementing this logic.

  1. <?php
  2. namespace App;
  3. use Ellipse\Handlers\FallbackRequestHandler;
  4. // Get some fallback Psr-7 response, here with a 404 status code.
  5. $response = some_psr7_response_factory()->withStatus(404);
  6. // Create a fallback request handler returning the response.
  7. $fallback = new FallbackRequestHandler($response);
  8. // The response is returned.
  9. $response = $fallback->handle($request);

Request handler with middleware

This package provides an Ellipse\Handlers\RequestHandlerWithMiddleware class allowing to wrap a middleware around a request handler.

  1. <?php
  2. namespace App;
  3. use Ellipse\Handlers\FallbackRequestHandler;
  4. use Ellipse\Handlers\RequestHandlerWithMiddleware;
  5. // create Psr-15 middleware and request handler.
  6. $middleware = new SomeMiddleware;
  7. $handler = new FallbackRequestHandler($response);
  8. // Wrap the middleware around the request handler.
  9. $decorated = new RequestHandlerWithMiddleware($handler, $middleware);
  10. // The request goes through the middleware then hit the fallback request handler.
  11. $response = $decorated->handle($request);

Request handler with middleware stack

This package provides an Ellipse\Handlers\RequestHandlerWithMiddlewareStack class allowing to wrap many middleware around a request handler in LIFO order.

  1. <?php
  2. namespace App;
  3. use Ellipse\Handlers\FallbackRequestHandler;
  4. use Ellipse\Handlers\RequestHandlerWithMiddlewareStack;
  5. // create Psr-15 middleware and request handler.
  6. $middleware1 = new SomeMiddleware1;
  7. $middleware2 = new SomeMiddleware2;
  8. $handler = new FallbackRequestHandler($response);
  9. // Wrap the middleware around the request handler in LIFO order.
  10. $decorated = new RequestHandlerWithMiddlewareStack($handler, [
  11. $middleware2,
  12. $middleware1,
  13. ]);
  14. // The request goes through middleware1, middleware2, then hit the fallback request handler.
  15. $response = $decorated->handle($request);

Request handler with middleware queue

This package provides an Ellipse\Handlers\RequestHandlerWithMiddlewareQueue class allowing to wrap many middleware around a request handler in FIFO order.

  1. <?php
  2. namespace App;
  3. use Ellipse\Handlers\FallbackRequestHandler;
  4. use Ellipse\Handlers\RequestHandlerWithMiddlewareQueue;
  5. // create Psr-15 middleware and request handler.
  6. $middleware1 = new SomeMiddleware1;
  7. $middleware2 = new SomeMiddleware2;
  8. $handler = new FallbackRequestHandler($response);
  9. // Wrap the middleware around the request handler in FIFO order.
  10. $decorated = new RequestHandlerWithMiddlewareQueue($handler, [
  11. $middleware1,
  12. $middleware2,
  13. ]);
  14. // The request goes through middleware1, middleware2, then hit the fallback request handler.
  15. $response = $decorated->handle($request);