Skip to content

Instantly share code, notes, and snippets.

@pmjones
Last active August 29, 2015 14:22
Show Gist options
  • Save pmjones/346a3912f3862da5ca9f to your computer and use it in GitHub Desktop.
Save pmjones/346a3912f3862da5ca9f to your computer and use it in GitHub Desktop.
<?php
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
class Dispatcher
{
protected $queue;
protected $resolver;
public function __construct(array $queue, callable $resolver)
{
$this->queue = $queue;
$this->resolver = $resolver;
}
public function __invoke(Request $request, Response $response)
{
$spec = array_shift($queue);
if (! $spec) {
$spec = function ($request, $response) { return $response; };
}
$middleware = call_user_func($this->resolver, $spec);
return $middleware($request, $response, $this);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment