SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
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
Content-Type: text/plain
This is the response body
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);
}
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);
}
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();
}
Diactoros
<?php
$request = (new ZendDiactorosRequest())
->withUri(new ZendDiactorosUri(‘http://example.com’))
->withMethod(‘PATCH’)
->withAddedHeader(‘Authorization’, ‘Bearer ‘ . $token)
->withAddedHeader(‘Content-Type’, ‘application/json’);
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’);
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 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!’);
});
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)
“ ”
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

Mais conteúdo relacionado

Mais procurados

Golang para desenvolvedores pragmáticos parte 2
Golang para desenvolvedores pragmáticos  parte 2Golang para desenvolvedores pragmáticos  parte 2
Golang para desenvolvedores pragmáticos parte 2Wilson Júnior
 
Principais comandos do terminal no linux tecnologia para todos!
Principais comandos do terminal no linux   tecnologia para todos!Principais comandos do terminal no linux   tecnologia para todos!
Principais comandos do terminal no linux tecnologia para todos!Fábio Fernando
 
Why functional programming matters
Why functional programming mattersWhy functional programming matters
Why functional programming mattersJean Carlo Machado
 
eduAula08 phonegap arquivos
eduAula08 phonegap arquivoseduAula08 phonegap arquivos
eduAula08 phonegap arquivosRoberson Alves
 
Escreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornadoEscreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornadoWilson Júnior
 
Gerando bindings de bibliotecas C++ para Python
Gerando bindings de bibliotecas C++ para PythonGerando bindings de bibliotecas C++ para Python
Gerando bindings de bibliotecas C++ para PythonMarcelo Lira
 
12 aula - shell script-2015
12   aula - shell script-201512   aula - shell script-2015
12 aula - shell script-2015Flávia Santos
 

Mais procurados (10)

Golang para desenvolvedores pragmáticos parte 2
Golang para desenvolvedores pragmáticos  parte 2Golang para desenvolvedores pragmáticos  parte 2
Golang para desenvolvedores pragmáticos parte 2
 
Estrutura de dados ii
Estrutura de dados iiEstrutura de dados ii
Estrutura de dados ii
 
Principais comandos do terminal no linux tecnologia para todos!
Principais comandos do terminal no linux   tecnologia para todos!Principais comandos do terminal no linux   tecnologia para todos!
Principais comandos do terminal no linux tecnologia para todos!
 
Why functional programming matters
Why functional programming mattersWhy functional programming matters
Why functional programming matters
 
eduAula08 phonegap arquivos
eduAula08 phonegap arquivoseduAula08 phonegap arquivos
eduAula08 phonegap arquivos
 
Escreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornadoEscreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornado
 
Gerando bindings de bibliotecas C++ para Python
Gerando bindings de bibliotecas C++ para PythonGerando bindings de bibliotecas C++ para Python
Gerando bindings de bibliotecas C++ para Python
 
12 aula - shell script-2015
12   aula - shell script-201512   aula - shell script-2015
12 aula - shell script-2015
 
Palestra MongoDB
Palestra MongoDBPalestra MongoDB
Palestra MongoDB
 
JasperReports
JasperReportsJasperReports
JasperReports
 

Semelhante a A revolução dos middlewares com Zend Expressive

O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3Flávio Lisboa
 
O Aduino ama a Internet - TDC 2012
O Aduino ama a Internet - TDC 2012O Aduino ama a Internet - TDC 2012
O Aduino ama a Internet - TDC 2012Marco Antonio Maciel
 
De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupWagner Roberto dos Santos
 
Alta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxAlta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxThiago Paes
 
Você não deveria escrever uma API para isso
Você não deveria escrever uma API para issoVocê não deveria escrever uma API para isso
Você não deveria escrever uma API para issoJunior Conte
 
Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009silva.edgar
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01joaocarlobarros
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaoTDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaotdc-globalcode
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Elton Minetto
 
PHP, mas o que é isso ?
PHP, mas o que é isso ?PHP, mas o que é isso ?
PHP, mas o que é isso ?phpal
 

Semelhante a A revolução dos middlewares com Zend Expressive (20)

O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
O Aduino ama a Internet - TDC 2012
O Aduino ama a Internet - TDC 2012O Aduino ama a Internet - TDC 2012
O Aduino ama a Internet - TDC 2012
 
De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações Mashup
 
Alta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxAlta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com Nginx
 
Você não deveria escrever uma API para isso
Você não deveria escrever uma API para issoVocê não deveria escrever uma API para isso
Você não deveria escrever uma API para isso
 
PHP GERAL
PHP GERALPHP GERAL
PHP GERAL
 
Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009
 
Php FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHPPhp FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHP
 
Php
PhpPhp
Php
 
Aprofunde se no php 5.3
Aprofunde se no php 5.3Aprofunde se no php 5.3
Aprofunde se no php 5.3
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Php 02 Primeiros Passos
Php 02 Primeiros PassosPhp 02 Primeiros Passos
Php 02 Primeiros Passos
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaoTDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
Hello SAFE World!!!
Hello SAFE World!!!Hello SAFE World!!!
Hello SAFE World!!!
 
PHP, mas o que é isso ?
PHP, mas o que é isso ?PHP, mas o que é isso ?
PHP, mas o que é isso ?
 

A revolução dos middlewares com Zend Expressive