a revolução dos middlewares

Post on 10-Jan-2017

668 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

A Revolução dos Middlewares

Zend Expressive

Ariana Kataoka

@ariskataoka

Paulo Eduardo

@pauloelr

PHPSP

www.phpsp.org.br

Objetivos

Protocolo HTTP

Protocolo HTTP

RequisiçãoPOST /path HTTP/1.1

Host: example.comfoo=bar&baz=bat

Protocolo HTTP

RequisiçãoPOST /path HTTP/1.1

Host: example.comfoo=bar&baz=bat

Processamento

Protocolo HTTP

RequisiçãoPOST /path HTTP/1.1

Host: example.comfoo=bar&baz=bat

Processamento

RespostaHTTP/1.1 200 OK

Content-Type: text/plainThis is the response body

PSR-7

<?php namespace Psr\Http\Message; interface MessageInterface { public function getProtocolVersion(); public function withProtocolVersion($version); public function getHeaders(); public function hasHeader($name); public function getHeader($name); public function getHeaderLine($name); public function withHeader($name, $value); public function withAddedHeader($name, $value); public function withoutHeader($name); public function getBody(); public function withBody(StreamInterface $body); }

PSR-7

<?php namespace Psr\Http\Message; interface RequestInterface extends MessageInterface { public function getRequestTarget(); public function withRequestTarget($requestTarget); public function getMethod(); public function withMethod($method); public function getUri(); public function withUri(UriInterface $uri, $preserveHost = false); }

PSR-7

<?php namespace Psr\Http\Message; interface RequestInterface extends MessageInterface { public function getRequestTarget(); public function withRequestTarget($requestTarget); public function getMethod(); public function withMethod($method); public function getUri(); public function withUri(UriInterface $uri, $preserveHost = false); }

<?php namespace Psr\Http\Message; interface ResponseInterface extends MessageInterface { public function getStatusCode(); public function withStatus($code, $reasonPhrase = ‘’); public function getReasonPhrase(); }

Diactoros

<?php $request = (new Zend\Diactoros\Request()) ->withUri(new Zend\Diactoros\Uri(‘http://example.com’)) ->withMethod(‘PATCH’) ->withAddedHeader(‘Authorization’, ‘Bearer ‘ . $token) ->withAddedHeader(‘Content-Type’, ‘application/json’);

Diactoros

<?php $request = (new Zend\Diactoros\Request()) ->withUri(new Zend\Diactoros\Uri(‘http://example.com’)) ->withMethod(‘PATCH’) ->withAddedHeader(‘Authorization’, ‘Bearer ‘ . $token) ->withAddedHeader(‘Content-Type’, ‘application/json’);

<?php $response = new Zend\Diactoros\Response(); $response->getBody()->write(“some content\n”); $response->getBody()->write(“more content\n”); $response = $response ->withHeader(‘Content-Type’, ‘text/plain’) ->withAddedHeader(‘X-Show-Something’, ‘something’);

Middlewares

Middleware é um código que existe entre a requisição e a resposta, podendo receber uma

requisição e realizar ações baseadas nela, como retornar uma resposta ou delegar para o

próximo middleware na fila.Documentação do Zend Stratigility

(Tradução Livre)

“ ”

Middlewares

Requisição Resposta

Middleware

Middleware

Application

Stratigility

<?php use Zend\Stratigility\MiddlewarePipe; use Zend\Diactoros\Server; require __DIR__ . ‘/../vendor/autoload.php’; $app = new MiddlewarePipe(); $app->pipe(‘/’, function ($req, $res, $next) { if (! in_array($req->getUri()->getPath(), [‘/’, ‘’], true)) { return $next($req, $res); } return $res->end(‘Hello world!’); }); $app->pipe(‘/foo’, function ($req, $res, $next) { return $res->end(‘FOO!’); });

Zend Expressive

O Zend Expressive é desenvolvido com base no Zend Stratigility para prover um framework

minimalista de Middlewares PSR-7 em PHPDocumentação do Zend Stratigility

(Tradução Livre)

“ ”

Zend Expressive

26 de Ago de 2015 - Versão 0.1.0

Zend Expressive

26 de Ago de 2015 - Versão 0.1.0

03 de Set de 2015 - Versão 0.2.0

Zend Expressive

26 de Ago de 2015 - Versão 0.1.0

03 de Set de 2015 - Versão 0.2.0

12 de Set de 2015 - Versão 0.3.0

Zend Expressive

26 de Ago de 2015 - Versão 0.1.0

03 de Set de 2015 - Versão 0.2.0

12 de Set de 2015 - Versão 0.3.0

28 de Jan de 2016 - Versão 1.0

Router

Aura Router

Router

Aura Router

Fast Router

Dependency Injection Container

Aura Router

Fast Router

Zend Router

Router

Aura

Dependency Injection Container

Aura

Pimple

Dependency Injection Container

Aura

Pimple

Zend Service Manager

Template Manager

Plates

Template Manager

Plates

Twig

Template Manager

Plates

Twig

Zend View

Let´s Code

Dúvidas

Obrigado

top related