Mais especificamente, quantas implementações do PSR-7 ServerRequestInterface existem?
Inicialmente, parece que a resposta pode ser de até três dúzias.
Mas cada vez mais parece que a resposta real, para uma primeira aproximação, é “zero”.
Para implementar ServerRequestInterface, os métodos withAttribute() e withParsedBody() devem manter a imutabilidade do objeto de mensagem. No entanto, nenhuma das implementações existentes faz isso.
Para ver por si mesmo, clone meu repositório PSR-7 Immutability Testing e execute os testes, que cobrem as três implementações PSR-7 mais populares.
A imutabilidade é muito difícil de implementar – pelo menos, não sem algumas restrições graves, nenhuma das quais são especificadas pelo PSR-7 ServerRequestInterface. Quanto mais eu trabalho com ele, mais eu começo a pensar que não é totalmente implementável como especificado em primeiro lugar.
UPDATE: Aparentemente eu estava fazendo algo quando sugeri que o PSR-7 não pode ser implementado como escrito. Sara Golemon (que esqueceu mais sobre os internos do PHP do que eu jamais vou saber) aponta: “Não é tecnicamente implementável. E assim você está tecnicamente correto, o melhor tipo de correto.” (Arquivado para a posteridade em https://archive.is/BnkGb.)
UPDATE 2: comentaristas do Reddit salientam que o método ServerRequestInterface::getAttributes() afirma “Atributos serão específicos para aplicações e pedidos e PODEM ser mutáveis.” Isso parece em desacordo com o método withAttribute (), que exige que o objeto permaneça imutável. Na melhor das hipóteses, isso parece uma supervisão na especificação e, na pior das hipóteses, é uma contradição interna.
***
Paul M. Jones faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://paul-m-jones.com/archives/6510
Powered by WPeMatico