@@ -100,6 +100,8 @@ It allows executing promises inside PSR-15 and PSR-7 Middlewares and request han
100100
101101### PSR-15 Middleware
102102
103+ ** Promise Based**
104+
103105``` php
104106<?php
105107declare(strict_types = 1);
@@ -111,21 +113,55 @@ use Psr\Http\Message\ResponseInterface;
111113use Psr\Http\Message\ServerRequestInterface;
112114use Psr\Http\Server\MiddlewareInterface;
113115use Psr\Http\Server\RequestHandlerInterface;
116+ use function React\Promise\resolve;
114117
115118class SomeMiddleware implements MiddlewareInterface
116119{
117120 public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
118121 {
119122 return new PromiseResponse(
120123 resolve($request)
121- ->then(static fn(ServerrequestInsterface $request) => $handler->handle($request))
124+ ->then(static fn(ServerRequestInterface $request) => $handler->handle($request))
125+ );
126+ }
127+ }
128+ ```
129+
130+ ** Coroutine based**
131+
132+ ``` php
133+ <?php
134+ declare(strict_types = 1);
135+
136+ namespace App;
137+
138+ use Antidot\React\PromiseResponse;
139+ use Psr\Http\Message\ResponseInterface;
140+ use Psr\Http\Message\ServerRequestInterface;
141+ use Psr\Http\Server\MiddlewareInterface;
142+ use Psr\Http\Server\RequestHandlerInterface;
143+ use function React\Promise\resolve;
144+
145+ class SomeMiddleware implements MiddlewareInterface
146+ {
147+ public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
148+ {
149+ return PromiseResponse::fromGeneratorCallback(
150+ static function(ServerRequestInterface $request) {
151+ $value = yield resolve('Some promised value.');
152+ $request = $request->withAttribute('some_attribute', $value);
153+
154+ return $handler->handle($request));
155+ }
122156 );
123157 }
124158}
125159```
126160
127161### PSR-7 Request Handler
128162
163+ ** Promise Based**
164+
129165``` php
130166<?php
131167declare(strict_types = 1);
@@ -136,16 +172,46 @@ use Antidot\React\PromiseResponse;
136172use Psr\Http\Message\ResponseInterface;
137173use Psr\Http\Message\ServerRequestInterface;
138174use Psr\Http\Server\RequestHandlerInterface;
175+ use function React\Promise\resolve;
139176
140- class SomeMiddleware implements RequestHandlerInterface
177+ class SomeRequestHandler implements RequestHandlerInterface
141178{
142- public function process (ServerRequestInterface $request): ResponseInterface
179+ public function handle (ServerRequestInterface $request): ResponseInterface
143180 {
144- return resolve($request)->then(
145- function(ServerrequestInterface $request): ResponseInterface {
181+ return new PromiseResponse( resolve($request)->then(
182+ function(ServerRequestInterface $request): ResponseInterface {
146183 return new Response('Hello World!!!');
147184 }
148- );;
185+ ));
186+ }
187+ }
188+ ```
189+
190+ ** Coroutine based**
191+
192+ ``` php
193+ <?php
194+ declare(strict_types = 1);
195+
196+ namespace App;
197+
198+ use Antidot\React\PromiseResponse;
199+ use Psr\Http\Message\ResponseInterface;
200+ use Psr\Http\Message\ServerRequestInterface;
201+ use Psr\Http\Server\RequestHandlerInterface;
202+ use function React\Promise\resolve;
203+
204+ class SomeRequestHandler implements RequestHandlerInterface
205+ {
206+ public function handle(ServerRequestInterface $request): ResponseInterface
207+ {
208+ return PromiseResponse::fromGeneratorCallback(
209+ function(ServerRequestInterface $request): ResponseInterface {
210+ $message = yield resolve('Hello World!!!');
211+
212+ return new Response($message);
213+ }
214+ ));
149215 }
150216}
151217```
0 commit comments