a revolução dos middlewares

33
A Revolução dos Middlewares Zend Expressive

Upload: paulo-eduardo-rezende

Post on 10-Jan-2017

666 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: A Revolução dos Middlewares

A Revolução dos Middlewares

Zend Expressive

Page 2: A Revolução dos Middlewares

Ariana Kataoka

@ariskataoka

Paulo Eduardo

@pauloelr

Page 3: A Revolução dos Middlewares

PHPSP

www.phpsp.org.br

Page 4: A Revolução dos Middlewares

Objetivos

Page 5: A Revolução dos Middlewares

Protocolo HTTP

Page 6: A Revolução dos Middlewares

Protocolo HTTP

RequisiçãoPOST /path HTTP/1.1

Host: example.comfoo=bar&baz=bat

Page 7: A Revolução dos Middlewares

Protocolo HTTP

RequisiçãoPOST /path HTTP/1.1

Host: example.comfoo=bar&baz=bat

Processamento

Page 8: A Revolução dos Middlewares

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

Page 9: A Revolução dos Middlewares

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); }

Page 10: A Revolução dos Middlewares

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); }

Page 11: A Revolução dos Middlewares

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(); }

Page 12: A Revolução dos Middlewares

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’);

Page 13: A Revolução dos Middlewares

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’);

Page 14: A Revolução dos Middlewares

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)

“ ”

Page 15: A Revolução dos Middlewares

Middlewares

Requisição Resposta

Middleware

Middleware

Application

Page 16: A Revolução dos Middlewares

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!’); });

Page 17: A Revolução dos Middlewares

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)

“ ”

Page 18: A Revolução dos Middlewares

Zend Expressive

26 de Ago de 2015 - Versão 0.1.0

Page 19: A Revolução dos Middlewares

Zend Expressive

26 de Ago de 2015 - Versão 0.1.0

03 de Set de 2015 - Versão 0.2.0

Page 20: A Revolução dos Middlewares

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

Page 21: A Revolução dos Middlewares

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

Page 22: A Revolução dos Middlewares

Router

Aura Router

Page 23: A Revolução dos Middlewares

Router

Aura Router

Fast Router

Page 24: A Revolução dos Middlewares

Dependency Injection Container

Aura Router

Fast Router

Zend Router

Page 25: A Revolução dos Middlewares

Router

Aura

Page 26: A Revolução dos Middlewares

Dependency Injection Container

Aura

Pimple

Page 27: A Revolução dos Middlewares

Dependency Injection Container

Aura

Pimple

Zend Service Manager

Page 28: A Revolução dos Middlewares

Template Manager

Plates

Page 29: A Revolução dos Middlewares

Template Manager

Plates

Twig

Page 30: A Revolução dos Middlewares

Template Manager

Plates

Twig

Zend View

Page 31: A Revolução dos Middlewares

Let´s Code

Page 32: A Revolução dos Middlewares

Dúvidas

Page 33: A Revolução dos Middlewares

Obrigado