cormy / bamboo
Bamboo style PSR-7 middleware pipe using generators
0.1.1
2016-11-23 10:36 UTC
Requires
- php: >=7
- cormy/server-middleware: ^0.1.0
- cormy/server-middleware-dispatcher: ^0.1.0
- cormy/server-request-handler: ^0.1.0
- psr/http-message: ^1.0
Requires (Dev)
This package is not auto-updated.
Last update: 2024-10-26 20:26:44 UTC
README
🎍 Bamboo style PSR-7 middleware pipe using generators
Install
composer require cormy/bamboo
Usage
use Cormy\Server\Bamboo; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; // create your bamboo stem nodes, aka middlewares $nodes = []; $nodes[] = function (ServerRequestInterface $request):\Generator { // delegate $request to the next request handler, i.e. the middleware right below $response = (yield $request); return $response->withHeader('X-PoweredBy', 'Unicorns'); }; $nodes[] = function (ServerRequestInterface $request):\Generator { // delegate $request to the next request handler, i.e. the $finalHandler below $response = (yield $request); return $response->withHeader('content-type', 'application/json; charset=utf-8'); }; // create the middleware pipe $middlewarePipe = new Bamboo($nodes); // create a handler for requests which reached the end of the pipe $finalHandler = function (ServerRequestInterface $request):ResponseInterface { return new \Zend\Diactoros\Response(); }; // and dispatch a request $response = $middlewarePipe->dispatch(new \Zend\Diactoros\ServerRequest(), $finalHandler);
API
Cormy\Server\Bamboo implements MiddlewareInterface
Bamboo::__construct
/** * Bamboo style PSR-7 middleware pipe. * * @param (callable|MiddlewareInterface)[] $nodes the middlewares, which requests pass through */ public function __construct(array $nodes)
Bamboo::dispatch
/** * Process an incoming server request and return the response. * * @param ServerRequestInterface $request * @param callable|RequestHandlerInterface $finalHandler * * @return ResponseInterface */ public function dispatch(ServerRequestInterface $request, callable $finalHandler):ResponseInterface
Inherited from MiddlewareInterface::__invoke
/** * Process an incoming server request and return the response, optionally delegating * to the next request handler. * * @param ServerRequestInterface $request * * @return Generator yields PSR `ServerRequestInterface` instances and returns a PSR `ResponseInterface` instance */ public function __invoke(ServerRequestInterface $request):Generator;
Related
- Cormy\Server\Onion – Onion style PSR-7 middleware stack using generators
- Cormy\Server\MiddlewareDispatcher – Cormy PSR-7 server middleware dispatcher
- Cormy\Server\RequestHandlerInterface – Common interfaces for PSR-7 server request handlers
- Cormy\Server\MiddlewareInterface – Common interfaces for Cormy PSR-7 server middlewares
License
MIT © Michael Mayer