Negotiation es una biblioteca independiente sin dependencias que le permite implementar la negociación de contenido en su aplicación, independientemente del marco que utilice. Esta biblioteca se basa en RFC 7231. ¡La negociación es fácil de usar y está ampliamente probada en unidades!
Importante: Estás navegando por la documentación de Negociación 3.x +.
La documentación para la versión 1.x está disponible aquí: Documentación de negociación 1.x.
La documentación para la versión 2.x está disponible aquí: Documentación de negociación 2.x.
La forma recomendada de instalar Negotiation es a través de 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'
El Negotiator
devuelve una instancia de Accept
, o null
si ha fallado la negociación del mejor tipo de medio.
<?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
LanguageNegotiator
devuelve una instancia de AcceptLanguage
.
<?php
$ negotiator = new Negotiation EncodingNegotiator ();
$ encoding = $ negotiator -> getBest ( $ acceptHeader , $ priorities );
EncodingNegotiator
devuelve una instancia 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
CharsetNegotiator
devuelve una instancia de AcceptCharset
.
Accept*
Clases Las clases Accept
y Accept*
comparten métodos comunes como:
getValue()
devuelve el valor aceptado (por ejemplo, text/html; z=y; a=b; c=d
)getNormalizedValue()
devuelve el valor con los parámetros ordenados (por ejemplo, text/html; a=b; c=d; z=y
)getQuality()
devuelve la calidad si está disponible (parámetro q
)getType()
devuelve el tipo aceptado (por ejemplo, text/html
)getParameters()
devuelve el conjunto de parámetros (excluyendo el parámetro q
si se proporciona)getParameter()
permite recuperar un parámetro determinado por su nombre. De lo contrario, recurra a un valor $default
(anulable).hasParameter()
indica si existe un parámetro. La negociación sigue al control de versiones semántico.
A partir de octubre de 2016, la rama 1.x
ya no es compatible, lo que significa que la versión principal 1
llegó al final de su vida útil. La última versión es: 1.5.0.
A partir de noviembre de 2020, la rama 2.x
ya no es compatible, lo que significa que la versión principal 2
llegó al final de su vida útil. La última versión es: 2.3.1.
dev-master
) Negotiation 3.0 se lanzó el 26 de noviembre de 2020. Esta es la versión estable actual y está sincronizada con la rama principal (también conocida como master
).
Configure el conjunto de pruebas usando Composer:
$ composer install --dev
Ejecútelo usando PHPUnit:
$ phpunit
Ver archivo CONTRIBUCIÓN.
Algunas partes de esta biblioteca están inspiradas en:
Guillermo Durand
@neural-wetware
La negociación se libera bajo la licencia MIT. Consulte el archivo de LICENCIA incluido para obtener más detalles.