O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
A Revolução dos Middlewares
Zend Expressive
Ariana Kataoka
@ariskataoka
Paulo Eduardo
@pauloelr
PHPSP
www.phpsp.org.br
Objetivos
Protocolo HTTP
Protocolo HTTP
Requisição
POST /path HTTP/1.1
Host: example.com
foo=bar&baz=bat
Protocolo HTTP
Requisição
POST /path HTTP/1.1
Host: example.com
foo=bar&baz=bat
Processamento
Protocolo HTTP
Requisição
POST /path HTTP/1.1
Host: example.com
foo=bar&baz=bat
Processamento
Resposta
HTTP/1.1 200 OK
Con...
PSR-7
<?php
namespace PsrHttpMessage;
interface MessageInterface
{
public function getProtocolVersion();
public function w...
PSR-7
<?php
namespace PsrHttpMessage;
interface RequestInterface extends MessageInterface
{
public function getRequestTarg...
PSR-7
<?php
namespace PsrHttpMessage;
interface RequestInterface extends MessageInterface
{
public function getRequestTarg...
Diactoros
<?php
$request = (new ZendDiactorosRequest())
->withUri(new ZendDiactorosUri(‘http://example.com’))
->withMethod...
Diactoros
<?php
$request = (new ZendDiactorosRequest())
->withUri(new ZendDiactorosUri(‘http://example.com’))
->withMethod...
Middlewares
Middleware é um código que existe entre a
requisição e a resposta, podendo receber uma
requisição e realizar a...
Middlewares
Requisição Resposta
Middleware
Middleware
Application
Stratigility
<?php
use ZendStratigilityMiddlewarePipe;
use ZendDiactorosServer;
require __DIR__ . ‘/../vendor/autoload.php...
Zend Expressive
O Zend Expressive é desenvolvido com base
no Zend Stratigility para prover um framework
minimalista de Mid...
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 J...
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
Próximos SlideShares
Carregando em…5
×

A Revolução dos Middlewares

782 visualizações

Publicada em

A Revolução dos Middlewares

Publicada em: Tecnologia
  • Seja o primeiro a comentar

A Revolução dos Middlewares

  1. 1. A Revolução dos Middlewares Zend Expressive
  2. 2. Ariana Kataoka @ariskataoka Paulo Eduardo @pauloelr
  3. 3. PHPSP www.phpsp.org.br
  4. 4. Objetivos
  5. 5. Protocolo HTTP
  6. 6. Protocolo HTTP Requisição POST /path HTTP/1.1 Host: example.com foo=bar&baz=bat
  7. 7. Protocolo HTTP Requisição POST /path HTTP/1.1 Host: example.com foo=bar&baz=bat Processamento
  8. 8. Protocolo HTTP Requisição POST /path HTTP/1.1 Host: example.com foo=bar&baz=bat Processamento Resposta HTTP/1.1 200 OK Content-Type: text/plain This is the response body
  9. 9. PSR-7 <?php namespace PsrHttpMessage; 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); }
  10. 10. PSR-7 <?php namespace PsrHttpMessage; 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); }
  11. 11. PSR-7 <?php namespace PsrHttpMessage; 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 PsrHttpMessage; interface ResponseInterface extends MessageInterface { public function getStatusCode(); public function withStatus($code, $reasonPhrase = ‘’); public function getReasonPhrase(); }
  12. 12. Diactoros <?php $request = (new ZendDiactorosRequest()) ->withUri(new ZendDiactorosUri(‘http://example.com’)) ->withMethod(‘PATCH’) ->withAddedHeader(‘Authorization’, ‘Bearer ‘ . $token) ->withAddedHeader(‘Content-Type’, ‘application/json’);
  13. 13. Diactoros <?php $request = (new ZendDiactorosRequest()) ->withUri(new ZendDiactorosUri(‘http://example.com’)) ->withMethod(‘PATCH’) ->withAddedHeader(‘Authorization’, ‘Bearer ‘ . $token) ->withAddedHeader(‘Content-Type’, ‘application/json’); <?php $response = new ZendDiactorosResponse(); $response->getBody()->write(“some contentn”); $response->getBody()->write(“more contentn”); $response = $response ->withHeader(‘Content-Type’, ‘text/plain’) ->withAddedHeader(‘X-Show-Something’, ‘something’);
  14. 14. 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) “ ”
  15. 15. Middlewares Requisição Resposta Middleware Middleware Application
  16. 16. Stratigility <?php use ZendStratigilityMiddlewarePipe; use ZendDiactorosServer; 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!’); });
  17. 17. Zend Expressive O Zend Expressive é desenvolvido com base no Zend Stratigility para prover um framework minimalista de Middlewares PSR-7 em PHP Documentação do Zend Stratigility (Tradução Livre) “ ”
  18. 18. Zend Expressive 26 de Ago de 2015 - Versão 0.1.0
  19. 19. Zend Expressive 26 de Ago de 2015 - Versão 0.1.0 03 de Set de 2015 - Versão 0.2.0
  20. 20. 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
  21. 21. 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
  22. 22. Router Aura Router
  23. 23. Router Aura Router Fast Router
  24. 24. Dependency Injection Container Aura Router Fast Router Zend Router
  25. 25. Router Aura
  26. 26. Dependency Injection Container Aura Pimple
  27. 27. Dependency Injection Container Aura Pimple Zend Service Manager
  28. 28. Template Manager Plates
  29. 29. Template Manager Plates Twig
  30. 30. Template Manager Plates Twig Zend View
  31. 31. Let´s Code
  32. 32. Dúvidas
  33. 33. Obrigado

×