1. Go to this page and download the library: Download ellipse/dispatcher library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ellipse / dispatcher example snippets
namespace App;
use Ellipse\Dispatcher;
// Create a dispatcher using two middleware and a request handler.
$dispatcher = new Dispatcher(new SomeRequestHandler, [
new SomeMiddleware1,
new SomeMiddleware2,
]);
// Here the request goes through SomeMiddleware1, SomeMiddleware2 and SomeRequestHandler.
$response = $dispatcher->handle($request);
// It can be used as the request handler of another dispatcher.
// Here the request goes through SomeMiddleware3, SomeMiddleware1, SomeMiddleware2 and SomeRequestHandler
(new Dispatcher($dispatcher, [new SomeMiddleware3]))->handle($request);
// Here a MiddlewareTypeException is thrown because 'something' is not a Psr-15 middleware.
new Dispatcher(new SomeRequestHandler, [new SomeMiddleware, 'something']);
namespace App;
use Ellipse\Dispatcher;
// Create a dispatcher with two middleware.
$dispatcher = new Dispatcher(new SomeRequestHandler, [
new SomeMiddleware1,
new SomeMiddleware2,
]);
// Create a new dispatcher with a new middleware on the top of the middleware queue.
$dispatcher = $dispatcher->with(new SomeMiddleware3);
// Here the request goes through SomeMiddleware3, SomeMiddleware1, SomeMiddleware2 and SomeRequestHandler.
$response = $dispatcher->handle($request);
// It allows to create dispatchers from the outside-in if you like.
$dispatcher = new Dispatcher(new SomeRequestHandler);
$dispatcher = $dispatcher->with(new SomeMiddleware3);
$dispatcher = $dispatcher->with(new SomeMiddleware2);
$dispatcher = $dispatcher->with(new SomeMiddleware1);
// Here the request goes through SomeMiddleware1, SomeMiddleware2, SomeMiddleware3 and SomeRequestHandler.
$response = $dispatcher->handle($request);
namespace App;
use Ellipse\DispatcherFactory;
// Get a dispatcher factory.
$factory = new DispatcherFactory;
// Use the factory to create a new Dispatcher.
$dispatcher = $factory(new SomeRequestHandler, [new SomeMiddleware]);
// Here a RequestHandlerTypeException is thrown because 'something' is not a Psr-15 request handler.
$dispatcher = $factory('something', [new SomeMiddleware]);
// Here a MiddlewareTypeException is thrown by the Dispatcher class because 'something' is not a Psr-15 middleware.
$dispatcher = $factory(new SomeRequestHandler, [new SomeMiddleware, 'something']);
namespace App;
use Ellipse\DispatcherFactory;
use Ellipse\Dispatcher\CallableResolver;
// Get a decorated dispatcher factory.
$factory = new CallableResolver(new DispatcherFactory);
// A dispatcher using both callables and Psr-15 implementations can now be created.
$middleware = function ($request, $handler) {
// This callable behave like a Psr-15 middleware.
};
$handler = function ($request) {
// This callable behave like a Psr-15 request handler.
};
// This works.
$response = $factory($handler, [$middleware, new SomeMiddleware])->handle($request);
namespace App;
use Ellipse\Dispatcher;
use Ellipse\DispatcherFactoryInterface;
class MyResolver implements DispatcherFactoryInterface
{
private $delegate;
public function __construct(DispatcherFactoryInterface $delegate)
{
$this->delegate = $delegate;
}
public function __invoke($handler, array $middleware = []): Dispatcher
{
// Replace the handler with a ResolvedRequestHandler when the request handler should be resolved.
$handler = $this->shouldResolveHandler($handler)
: new ResolvedRequestHandler($handler)
? $handler;
// Replace middleware with a ResolvedMiddleware when a middleware should be resolved.
$middleware = array_map(function ($middleware) {
return $this->shouldResolveMiddleware($middleware)
? new ResolvedMiddleware($middleware)
: $middleware;
}, $middleware);
// Delegate the dispatcher creation to the decorated factory.
return ($this->delegate)($handler, $middleware);
}
private shouldResolveHandler($handler): bool
{
// ...
}
private shouldResolveMiddleware($middleware): bool
{
// ...
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.