Skip to content

Instantly share code, notes, and snippets.

@TorbenKoehn
Created June 23, 2016 14:52
Show Gist options
  • Save TorbenKoehn/45a465400bdd85352f15f12981a7ddaa to your computer and use it in GitHub Desktop.
Save TorbenKoehn/45a465400bdd85352f15f12981a7ddaa to your computer and use it in GitHub Desktop.
<?php
use Psr\Http\Message\ResponseInterface;
use Ion\Http;
use Ion\Http\{
MiddlewareInterface,
Middleware\Dispatcher,
Middleware\RunFilterTrait,
Response
};
include '../../vendor/autoload.php';
$dp = new Dispatcher();
$dp->append(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');
}
});
$dp->prepend(function($request, $response, $next) {
$response->getBody()->write("Hello from prepend closure!\n");
return $next($request, $response);
});
$dp->append(function($request, $response, $next) {
$response->getBody()->write("Hello from append closure!\n");
return $next($request, $response);
});
$dp->append(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 = $dp->dispatch(Http::getServerRequest(), new Response());
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