2017 © Pedro Peláez
 

library adr

base for my version of adr

image

polus/adr

base for my version of adr

  • Wednesday, April 11, 2018
  • by sunkan
  • Repository
  • 1 Watchers
  • 0 Stars
  • 19 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 19 % Grown

The README.md

Polus.Adr

This is my implementation of ADR, (*1)

Installation

The preferred method of installing this library is with Composer by running the following from your project root:, (*2)

$ composer require polus/adr, (*3)

You will also need to include an implementation of a router and a middleware-dispatcher, (*4)

Currently available routers

Currently available middleware dispatchers

Old versions

See polus/polus-adr for version 1 and 2, (*5)

Example

<?php


use Aura\Payload_Interface\PayloadInterface;
use Aura\Router\RouterContainer;
use Http\Factory\Diactoros\ResponseFactory;
use Http\Factory\Diactoros\ServerRequestFactory;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Polus\Adr\Adr;
use Polus\Adr\AbstractAction;
use Polus\Adr\Interfaces\ResolverInterface;
use Polus\Adr\Interfaces\ResponderInterface;
use Polus\Adr\ResponseHandler\HttpResponseHandler;
use Polus\Router\RouterMiddleware;
use Polus\Router\AuraRouter\RouterCollection;

$responseFactory = new \Http\Factory\Diactoros\ResponseFactory();
$routerContainer = new RouterContainer();
$routerCollection = new RouterCollection($routerContainer->getMap());
$routerDispatcher = new Polus\Router\AuraRouter\Dispatcher($routerContainer);

$actionResolver =  new class implements ResolverInterface {
    //..
};

$adr = new Adr(
    new ResponseFactory(),
    $actionResolver,
    $routerCollection,
    new HttpResponseHandler(),
    new \Polus\MiddlewareDispatcher\Factory(
        new \Polus\MiddlewareDispatcher\Relay\Dispatcher($responseFactory),
        [
            new RouterMiddleware($routerDispatcher),
            //More psr-15 middlewares
        ]
    )
);

//Define routes and actions
class Responder implements ResponderInterface
{
    public function __invoke(
        ServerRequestInterface $request,
        ResponseInterface $response,
        PayloadInterface $payload
    ): ResponseInterface {
        $response->getBody()->write("Index responder\n");
        return $response;
    }
}

$adr->get('/', new class extends AbstractAction {
    protected $responder = Responder::class;
});

//Run application
$factory = new ServerRequestFactory();
$adr->run($factory->createServerRequestFromArray($_SERVER));

The Versions