1. Go to this page and download the library: Download ellipse/handlers-adr 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 / handlers-adr example snippets
namespace App\Domain;
use Ellipse\ADR\Payload;
use Ellipse\ADR\PayloadInterface;
use Ellipse\ADR\DomainInterface;
use App\SomeService;
class SomeDomain implements DomainInterface
{
private $service;
public function __construct(SomeService $service)
{
$this->service = $service;
}
public function payload(array $input): PayloadInterface
{
// perform domain logic...
// This payload will be passed to the responder ->response() method.
return new Payload('FOUND', ['k1' => $v1, 'k2' => $v2]);
}
}
namespace App\Responder;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Ellipse\ADR\PayloadInterface;
use Ellipse\Handlers\ResponderInterface;
use App\ResponseFactory;
class SomeResponder implements ResponderInterface
{
private $factory;
public function __construct(ResponseFactory $factory)
{
$this->factory = $factory;
}
public function response(ServerRequestInterface $request, PayloadInterface $payload): ResponseInterface
{
// Different Psr-7 responses can be produced according to the given Psr-7 request and
// the given payload.
if ($payload->status() === 'FOUND') {
return $this->factory->createFoundResponse('template', $payload->data());
}
return $this->factory->createNotFoundResponse();
}
}
namespace App;
use App\Domain\SomeDomain;
use App\Responder\SomeResponder;
use Ellipse\Handlers\ActionRequestHandler;
// Create an action request handler using SomeDomain and SomeResponder.
$domain = new SomeSomain(new SomeService);
$responder = new SomeResponder(new ResponseFactory);
$handler = new ActionRequestHandler($domain, $responder);
// A specific request parsing callable can be specified.
$handler = new ActionRequestHandler($domain, $responder, function ($request) {
$attributes = $request->getAttributes();
return [
'key' => explode(' ', $attributes['key']),
];
});
// Action request handler instances work like any Psr-15 request handler.
$response = $handler->handle($request);
namespace App;
use SomePsr11Container;
use App\Domain\SomeDomain;
use App\Responder\SomeResponder;
use Ellipse\Handlers\ContainerDomain;
use Ellipse\Handlers\ContainerResponder;
use Ellipse\Handlers\ContainerRequestParser;
use Ellipse\Handlers\ActionRequestHandler;
// Register SomeDomain, SomeResponder and a request parser into a Psr-11 container.
$container = new SomePsr11Container;
$container->set(SomeDomain::class, function ($container) {
$service = $container->get(SomeService::class);
return new SomeDomain($service);
});
$container->set(SomeResponder::class, function ($container) {
$factory = $container->get(ResponseFactory::class);
return new SomeResponder($factory);
});
$container->set('adr.parser', function () {
return function ($request) {
$attributes = $request->getAttributes();
return [
'key' => explode(' ', $attributes['key']),
];
};
});
// Create an action using domain, responder and request parser proxying container entries.
$domain = new ContainerDomain($container, SomeDomain::class);
$responder = new ContainerResponder($container, SomeResponder::class);
$parser = new ContainerRequestParser($container, 'adr.parser');
$handler = new ActionRequestHandler($domain, $responder, $parser);
// Actual domain, responder and request parser are retrieved from the container when the request is handled
// by the action.
$response = $handler->handle($request);
namespace App;
use SomePsr11Container;
use App\Domain\SomeDomain;
use App\Responder\SomeResponder;
use Ellipse\ADR\DomainInterface;
use Ellipse\Handlers\ResponderInterface;
use Ellipse\Handlers\ActionRequestHandler;
use Ellipse\Container\ReflectionContainer;
// Get some Psr-11 container.
$container = new SomePsr11Container;
// Decorate the container with a reflection container.
// Specify the domain and responder implementations can be auto wired.
$reflection = new ReflectionContainer($container, [
DomainInterface::class,
ResponderInterface::class,
]);
// Create an action using domain and responder proxying container entries.
$domain = new ContainerDomain($reflection, SomeDomain::class);
$responder = new ContainerResponder($reflection, SomeResponder::class);
$handler = new ActionRequestHandler($domain, $responder);
// Instances of SomeDomain and SomeResponder are built using auto wiring.
$response = $handler->handle($request);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.