Skip to content

Instantly share code, notes, and snippets.

@TorbenKoehn
Created June 23, 2016 15:13
Show Gist options
  • Save TorbenKoehn/c0b9cfefd5825d9d8260555b36c33be8 to your computer and use it in GitHub Desktop.
Save TorbenKoehn/c0b9cfefd5825d9d8260555b36c33be8 to your computer and use it in GitHub Desktop.
<?php
use Psr\Http\Message\ResponseInterface;
use Ion\Http;
use Ion\Http\{
Middleware\Queue,
MiddlewareInterface,
Middleware\Dispatcher,
Middleware\RunFilterTrait,
Response
};
include '../../vendor/autoload.php';
$middleware = [
//First
function($request, ResponseInterface $response, Queue $next) {
$response->getBody()->write("Hello from prepend closure!\n");
$next->unshift(function($request, ResponseInterface $response, $next) {
$response->getBody()->write("Hello from inner prepend closure!\n");
return $next($request, $response);
});
return $next($request, $response);
},
//Second
new class implements MiddlewareInterface {
use RunFilterTrait;
protected function run(): ResponseInterface
{
$this->response->getBody()->write("Hello from anon!\n");
return $this->response->withHeader('some-header', 'some-value');
}
},
//Third
function($request, ResponseInterface $response, Queue $next) {
$response->getBody()->write("Hello from append closure!\n");
$next->unshift(function($request, ResponseInterface $response, $next) {
$response->getBody()->write("Hello from inner append closure!\n");
return $next($request, $response);
});
return $next($request, $response);
},
//Fourth
new class implements MiddlewareInterface {
use RunFilterTrait;
protected function filter(ResponseInterface $response): ResponseInterface
{
$parts = array_map(function($line) {
return '<span style="color: red">'.$line.'</span>';
}, explode("\n", (string)$response->getBody()));
$response->getBody()->rewind();
$response->getBody()->write(implode("<br>", $parts));
return $response;
}
}
];
$resp = Http\Middleware::dispatchArray($middleware);
echo '<pre>';
var_dump($resp, (string)$resp->getBody());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment