PSR-7 - O que é isso afinal de contas Artigo

Conheça os cursos gratuitos do WebDevBr! - Inscreva-se!


Este artigo foi publicado a 2 anos, 6 meses, 3 dias atrás.

A PSR-7 foi aprovada, muitos devs esperavam ansiosos por isso, mas muitos que ouviram falar não sabem ao certo o que essa nova regra faz, outros que não ouviram falar vão ouvir agora.

O que é a PSR-7

Em tradução livre direta de https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-7-http-message-meta.md

O objetivo da presente proposta consiste em proporcionar um conjunto de interfaces comuns de mensagens HTTP, como descrito na RFC 7230 e RFC 7231, e URIs como descrito na RFC 3986 (no contexto de mensagens HTTP).

Gostou deste artigo?

Receba atualizações semanais com novos artigos do WebDevBr e outras dicas!

Uma interface serve para informar um conjunto de métodos e atributos que DEVEM ser implementados em uma classe, isso vai garantir que (não importa qual classe) ela tenha o que é necessário para que funcione ao ser usada com outros objetos (classes). Daí o termo interoperabilidade.

Vale dar uma lida nas RFCs citadas acima!

O que são estas mensagens HTTP

Se você precisou fazer esta pergunta então leia com atenção isso e depois acesse os links que vou recomendar, isso é muito importante e é urgente!

Toda requisição HTTP são formadas pelo protocolo usado (GET, POST, PUT...), um cabeçalho e o corpo da solicitação em sí. Uma requisição de solicitação (request), se parece com:

GET / HTTP/1.1
Host: www.webdevbr.com.br
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0
Referer: http://www.rexswain.com/httpview.html
Connection: close

E a resposta recebida (response) seria:

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 19 May 2015 15:20:39 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Set-Cookie: frontend=na36ro1caphud801nv603q7mf2; expires=Wed, 20-May-2015 15:20:39 GMT; Max-Age=86400; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
X-Frame-Options: SAMEORIGIN

Vale você correr atraz de mais informações para entender mais sobre HTTP, recomendo a leitura das RFCs que já informei acima.

As interfaces

As interfaces aprovadas são 7, cada uma para resolver um problema específico.

  1. Psr\Http\Message\MessageInterface
  2. Psr\Http\Message\RequestInterface
  3. Psr\Http\Message\ServerRequestInterface
  4. Psr\Http\Message\ResponseInterface
  5. Psr\Http\Message\StreamInterface
  6. Psr\Http\Message\UriInterface
  7. Psr\Http\Message\UploadedFileInterface

Neste primeiro momento não vou detalhar cada uma das interfaces e nem as regras e exemplos da PSR-7, você está iniciado e pode acompanhar maiores detalhes através do link oficial: http://www.php-fig.org/psr/psr-7/

Logo volto aqui e atualizo este artigo (ou crio um novo) com a tradução (e explicações detalhadas) da PSR na íntegra!

Conclusão

A PSR-7 é uma grande evolução para o PHP, ela especifica como você deve organziar seu código referente a requests, responses, upload e muito mais, conhecer, entender e aplicar deve ser prioridade pra você!

Dou uma dica de componente PHP que já implementa a PSR-7, o Guzzle.

A algum tempo eu não falo sobre PSRs aqui e mesmo o que já tinha está sendo atualizado, provavelmente quando você ler este artigo eu já tenha atualizado tudo, ou não, mas é provável que sim.

Você verá os links para os artigos aqui.


Cursos relacionados


* Parcelamento apenas cartão de crédito! Pode haver uma pequena variação no parcelamento em relação a simulações apresentadas!