Negociação é uma biblioteca autônoma sem nenhuma dependência que permite implementar negociação de conteúdo em seu aplicativo, qualquer que seja a estrutura usada. Esta biblioteca é baseada em RFC 7231. A negociação é fácil de usar e extensivamente testada em unidade!
Importante: Você está navegando na documentação do Negotiation 3.x +.
A documentação da versão 1.x está disponível aqui: Documentação da Negociação 1.x.
A documentação da versão 2.x está disponível aqui: Documentação da Negociação 2.x.
A forma recomendada de instalar o Negotiation é através do Composer:
$ composer require willdurand/negotiation
$ negotiator = new Negotiation Negotiator ();
$ acceptHeader = ' text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8 ' ;
$ priorities = array ( ' text/html; charset=UTF-8 ' , ' application/json ' , ' application/xml;q=0.5 ' );
$ mediaType = $ negotiator -> getBest ( $ acceptHeader , $ priorities );
$ value = $ mediaType -> getValue ();
// $value == 'text/html; charset=UTF-8'
O Negotiator
retorna uma instância de Accept
ou null
se a negociação do melhor tipo de mídia falhou.
<?php
$ negotiator = new Negotiation LanguageNegotiator ();
$ acceptLanguageHeader = ' en; q=0.1, fr; q=0.4, fu; q=0.9, de; q=0.2 ' ;
$ priorities = array ( ' de ' , ' fu ' , ' en ' );
$ bestLanguage = $ negotiator -> getBest ( $ acceptLanguageHeader , $ priorities );
$ type = $ bestLanguage -> getType ();
// $type == 'fu';
$ quality = $ bestLanguage -> getQuality ();
// $quality == 0.9
O LanguageNegotiator
retorna uma instância de AcceptLanguage
.
<?php
$ negotiator = new Negotiation EncodingNegotiator ();
$ encoding = $ negotiator -> getBest ( $ acceptHeader , $ priorities );
O EncodingNegotiator
retorna uma instância de AcceptEncoding
.
<?php
$ negotiator = new Negotiation CharsetNegotiator ();
$ acceptCharsetHeader = ' ISO-8859-1, UTF-8; q=0.9 ' ;
$ priorities = array ( ' iso-8859-1;q=0.3 ' , ' utf-8;q=0.9 ' , ' utf-16;q=1.0 ' );
$ bestCharset = $ negotiator -> getBest ( $ acceptCharsetHeader , $ priorities );
$ type = $ bestCharset -> getType ();
// $type == 'utf-8';
$ quality = $ bestCharset -> getQuality ();
// $quality == 0.81
O CharsetNegotiator
retorna uma instância de AcceptCharset
.
Accept*
aulas As classes Accept
e Accept*
compartilham métodos comuns, como:
getValue()
retorna o valor aceito (por exemplo, text/html; z=y; a=b; c=d
)getNormalizedValue()
retorna o valor com parâmetros classificados (por exemplo, text/html; a=b; c=d; z=y
)getQuality()
retorna a qualidade se disponível (parâmetro q
)getType()
retorna o tipo de aceitação (por exemplo, text/html
)getParameters()
retorna o conjunto de parâmetros (excluindo o parâmetro q
se fornecido)getParameter()
permite recuperar um determinado parâmetro pelo seu nome. Caso contrário, retorne para um valor $default
(anulável).hasParameter()
indica se existe um parâmetro. A negociação segue o versionamento semântico.
Em outubro de 2016, o branch 1.x
não é mais compatível, o que significa que a versão principal 1
atingiu o fim de sua vida útil. A última versão é: 1.5.0.
Em novembro de 2020, o branch 2.x
não é mais compatível, o que significa que a versão principal 2
atingiu o fim de sua vida útil. A última versão é: 2.3.1.
dev-master
) A Negociação 3.0 foi lançada em 26 de novembro de 2020. Esta é a versão estável atual e está sincronizada com o branch principal (também conhecido como master
).
Configure o conjunto de testes usando o Composer:
$ composer install --dev
Execute-o usando PHPUnit:
$ phpunit
Consulte arquivo CONTRIBUINDO.
Algumas partes desta biblioteca são inspiradas em:
Guilherme Durand
@neural-wetware
A negociação é liberada sob a licença MIT. Consulte o arquivo LICENSE incluído para obter detalhes.