2017 © Pedro Peláez
 

library tornadohttp

Middleware Container PSR-15

image

danielspk/tornadohttp

Middleware Container PSR-15

  • Monday, June 4, 2018
  • by danielspk
  • Repository
  • 1 Watchers
  • 0 Stars
  • 318 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 26 Versions
  • 5 % Grown

The README.md

TORNADO HTTP

Build Status Coverage Status Latest Stable Version Total Downloads License SensioLabsInsight, (*1)

ScreenShot, (*2)

TORNADO HTTP es un handler de middlewares PSR-15, (*3)

Documentación:

La siguiente documentación le enseñará el uso de Tornado Http., (*4)

Instalación:

Se recomienda instalar esta librería mediante el uso de Composer de la siguiente forma:, (*5)

    php composer.phar require danielspk/tornadohttp:~4.0

Esto instalará Tornado HTTP y creará o actualizará el archivo composer.json con la siguiente dependencia:, (*6)

{
    "require": {
        "danielspk/tornadohttp": "~4.0"
    }
}

Crear el contenedor de aplicación:

Tornado Http puede construirse de varias formas:, (*7)

Sin parámetros:

    $app = new \DMS\TornadoHttp\TornadoHttp();

Con una cola de Middlewares

    $app = new \DMS\TornadoHttp\TornadoHttp(
        [
            ['middleware' => (new MiddlewareClass)],
            ['middleware' => $middlewareOne],
            ['middleware' => 'ServiceMiddlewareTwo'],
            ['middleware' => 'App\MiddlewareThree', 'path' => '/admin'],
            ['middleware' => ['App\MiddlewareFour', [$paramOne, $paramTwo]]],
        ]
    );

Nota: Puede ver que hay cuatro formas de registrar un Middleware: a) instancia de MiddlewareInterface, b) string con referencia a un servicio del container, c) string con referencia de namespace de clase y d) string con referencia de clase y array con parámetros de constructor. Más adelante se explicará en detalle cada una de estas formas., (*8)

Con una Respuesta por defecto

    $app = new DMS\TornadoHttp\TornadoHttp(
        [],
        new DefaultResponse()
    );

Con un Contenedor de Servicios

    $app = new DMS\TornadoHttp\TornadoHttp(
        [],
        new DefaultResponse(),
        new Container()
    );

Nota: El contenedor de servicios a utilizar debe respetar el estándar PSR-11., (*9)

Con un Resolver de Middleware personalizado

    $resolver = class () implements ResolverInterface {
        public function solve($middleware) : MiddlewareInterface {
            // ...
        };
    };

    $app = new DMS\TornadoHttp\TornadoHttp(
        [],
        new DefaultResponse(),
        new Container(),
        new $resolver()
    );

Con un Entorno de Ejecución

    $app = new DMS\TornadoHttp\TornadoHttp(
        [],
        new DefaultResponse(),
        new Container(),
        null,
        'development'
    );

Cola de Middlewares:

Tornado Http permite registrar middlewares de 3 formas distintas: * mediante su constructor * mediante el método add() * mediante el método addList(), (*10)

Ejemplos:, (*11)

    // mediante el constructor
    $app = new DMS\TornadoHttp\TornadoHttp(
        [
            ['middleware' => (new MiddlewareClass)],
        ]
    );
    // mediante el método add()
    $app->add('ServiceMiddleware', '/', ['GET', 'POST'], ['dev', 'prod'], 0);
    // mediante el método addList()
    $app->addList([
        ['middleware' => (new MiddlewareClass)],
        ['middleware' => 'ServiceMiddleware'],
    ]);

Tornado Http dispone de una clase propia que resuelve automáticamente como ejecutar un middleware registrado., (*12)

Existen cuatro formas por defecto de registrar middlewares en Tornado Http utilizando su Resolver: * mediante una instancia de clase * mediante un string que hace referencia a un servicio contenido en el Contenedor de Servicios * mediante un string que hace referencia un namespace de una clase * mediante un array, (*13)

Todos los middlewares deben implementar \Psr\Http\Server\MiddlewareInterface., (*14)

Ejemplos:, (*15)

    // mediante una instancia de clase
    $app->add(new MiddlewareClass);

    // mediante un string de referencia a un servicio del contenedor
    $app->add('ServiceMiddleware');

    // mediante un string de referencia a un namespace de clase
    $app->add(App\MiddlewareClass::class);

    // mediante un string de referencia a un namespace de clase y parámetros de constructor
    $app->add([App\MiddlewareClass::class, [$param1, $param2]]);

Cada middleware puede ser registrado con los siguientes filtros de ejecución opcionales: * Métodos HTTP permitidos * Path URL * Entornos de ejecución permitidos, (*16)

Ejemplos:, (*17)

    // mediante el constructor
    $app = new DMS\TornadoHttp\TornadoHttp(
        [
            [
                'middleware' => (new MiddlewareTimeExecutionClass),
                'path'       => '/admin',
                'env'        => ['develop'],
            ],
            [
                'middleware' => (new MiddlewareLogClass),
                'methods'    => ['POST', 'PUT'],
                'env'        => ['production', 'develop'],
            ],
        ]
    );

Container Trait:

Tornado Http facilita un trait que puede ser utilizado dentro de los middlewares., (*18)

Cuando Tornado Http detecta que un middleware utiliza Container\ContainerTrait inyecta automáticamente el contenedor de servicios registrado en Tornado Http., (*19)

Se podrá acceder al contenedor de servicios, dentro del middleware, de la siguiente forma:, (*20)

    class ExampleMiddleware implements \Psr\Http\Server\MiddlewareInterface
    {
        use \DMS\TornadoHttp\Container\ContainerTrait;

        public function getViewEngine()
        {
            return $this->getContainer()->get('view_engine');
        }

        // ...
    }

Custom Resolver:

Tornado Http permite registrar un resolver de middlewares personalizado. De esta forma puede reemplazar o extender el uso de las cuatro formas mencionadas para registrar middlewares., (*21)

Ejemplo:, (*22)

    class CustomResolver implements ResolverInterface {
        public function solve(string $middlewareClass) : MiddlewareInterface {
            return new $middlewareClass();
        }
    }

    $app = new DMS\TornadoHttp\TornadoHttp();
    $app->setResolver(new CustomResolver());

Resumen de Interfaces/Traits/Clases y Métodos:

DMS\TornadoHttp\TornadoHttp, (*23)

Método Detalle
__construct(array = [], ResponseInterface = null, ContainerInterface = null, ResolverInterface = null, string = 'dev') Crea una instancia de Tornado Http
handle(ServerRequestInterface) : ResponseInterface Ejecución de handlers
add(mixed, string = null, array = null, array = null, int = null) Agrega un Middleware a la cola
addList(array) Agrega una lista de Middlewares a la cola
getMiddlewareIndex() : int Devuelve el índice actual de la cola de Middlewares
setDI(ContainerInterface) : TornadoHttp Asigna un contenedor de servicios
getDI() : ContainerInterface Recupera el contenedor de servicios asignado
setResponse(ResponseInterface) : TornadoHttp Asigna una respuesta por defecto
getResponse() : ResponseInterface Recupera la respuesta del último middleware ejecutado
setContext(mixed) : TornadoHttp Asigna un contexto compartido
getContext() : mixed Recupera un contexto compartido
setResolver(ResolverInterface) : TornadoHttp Asigna un resolver de middlewares
setEnvironment(string) : TornadoHttp Asigna el entorno de ejecución
resolveMiddleware(mixed) : MiddlewareInterface Resuelve y ejecuta un Middleware

DMS\TornadoHttp\Container\ContainerTrait, (*24)

Método Detalle
setContainer(ContainerInterface) : self Asigna un contenedor de servicios
getContainer() : ContainerInterface Recupera el contenedor de servicios asignado

DMS\TornadoHttp\Container\InjectContainerInterface, (*25)

Método Detalle
setContainer(ContainerInterface) Asigna un contenedor de servicios
getContainer() : ContainerInterface Recupera el contenedor de servicios asignado

DMS\TornadoHttp\Middleware\Middleware, (*26)

Método Detalle
setContainer(ContainerInterface) : Middleware Asigna un contenedor de servicios
getContainer() : ContainerInterface Recupera el contenedor de servicios asignado

DMS\TornadoHttp\Resolver\Resolver, (*27)

Método Detalle
__construct(ContainerInterface = null) Crea una instancia del resolver
solve(MiddlewareInterface|string|array) : MiddlewareInterface Resuelve un middleware

DMS\TornadoHttp\Resolver\ResolverInterface, (*28)

Método Detalle
solve(MiddlewareInterface|string|array) : MiddlewareInterface Resuelve un middleware

Inspiración:

Licencia:

El proyecto se distribuye bajo la licencia MIT., (*29)

Sugerencias y colaboración:

Daniel Spiridione - http://daniel-spiridione.com.ar, (*30)

The Versions

04/06 2018

dev-develop

dev-develop http://tornadohttp.com/

Middleware Container PSR-15

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 psr-15 dms tornado danielspk tornado http psr15

04/06 2018

dev-master

9999999-dev http://tornadohttp.com/

Middleware Container PSR-15

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 psr-15 dms tornado danielspk tornado http psr15

04/06 2018
29/01 2018
25/01 2018

dev-release/v2.0.0

dev-release/v2.0.0 http://tornadohttp.com/

Middleware Container PSR-15

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware container php rest http psr-15 dms tornado danielspk tornado http psr15

21/03 2017

v1.5.2

1.5.2.0 http://tornadohttp.com/

Middleware Container PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms tornado danielspk tornado http

21/03 2017

v1.5.1

1.5.1.0 http://tornadohttp.com/

Middleware Container PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms tornado danielspk tornado http

21/03 2017

v1.5.0

1.5.0.0 http://tornadohttp.com/

Middleware Container PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms tornado danielspk tornado http

14/07 2016

v1.4.1

1.4.1.0 http://tornadohttp.com/

Middleware Container PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms tornado danielspk tornado http

10/07 2016

v1.4.0

1.4.0.0 http://tornadohttp.com/

Middleware Container PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms tornado danielspk tornado http

23/06 2016

v1.3.7

1.3.7.0 http://tornadohttp.com/

Middleware Container PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms tornado danielspk tornado http

03/06 2016

v1.3.6

1.3.6.0 http://tornadohttp.com/

Middleware Container PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms tornado danielspk tornado http

30/05 2016

v1.3.5

1.3.5.0 http://tornado-php.com/

Contenedor Middleware PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms danielspk tornado http

18/03 2016

v1.3.4

1.3.4.0 http://tornado-php.com/

Contenedor Middleware PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms danielspk tornado http

18/03 2016

v1.3.3

1.3.3.0 http://tornado-php.com/

Contenedor Middleware PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms danielspk tornado http

24/02 2016

v1.3.2

1.3.2.0 http://tornado-php.com/

Contenedor Middleware PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms danielspk tornado http

02/01 2016

v1.3.1

1.3.1.0 http://tornado-php.com/

Contenedor Middleware PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms danielspk tornado http

02/01 2016

v1.3.0

1.3.0.0 http://tornado-php.com/

Contenedor Middleware PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms danielspk tornado http

27/11 2015

v1.2.0

1.2.0.0 http://tornado-php.com/

Contenedor Middleware PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms danielspk tornado http

17/10 2015

v1.1.1

1.1.1.0 http://tornado-php.com/

Contenedor Middleware PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms danielspk tornado http

17/10 2015

v1.1.0

1.1.0.0 http://tornado-php.com/

Contenedor Middleware PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms danielspk tornado http

20/09 2015

v1.0.1

1.0.1.0 http://tornado-php.com/

Contenedor Middleware PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms danielspk tornado http

27/07 2015

v1.0.0

1.0.0.0 http://tornado-php.com/

Contenedor Middleware PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms danielspk tornado http

05/07 2015

v0.3.0

0.3.0.0 http://tornado-php.com/

Contenedor Middleware PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms danielspk tornado http

04/07 2015

v0.2.0

0.2.0.0 http://tornado-php.com/

Contenedor Middleware PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms danielspk tornado http

04/07 2015

v0.2.1

0.2.1.0 http://tornado-php.com/

Contenedor Middleware PSR-7

  Sources   Download

MIT

The Requires

 

The Development Requires

middleware psr-7 container php rest http psr7 dms danielspk tornado http