Négociation est une bibliothèque autonome sans aucune dépendance qui vous permet d'implémenter la négociation de contenu dans votre application, quel que soit le framework que vous utilisez. Cette bibliothèque est basée sur la RFC 7231. La négociation est facile à utiliser et largement testée unitairement !
Important : Vous parcourez la documentation de Négociation 3.x +.
La documentation pour la version 1.x est disponible ici : Documentation de négociation 1.x.
La documentation pour la version 2.x est disponible ici : Documentation de négociation 2.x.
La méthode recommandée pour installer Negotiation consiste à utiliser 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'
Le Negotiator
renvoie une instance de Accept
, ou null
si la négociation du meilleur type de média a échoué.
<?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
Le LanguageNegotiator
renvoie une instance de AcceptLanguage
.
<?php
$ negotiator = new Negotiation EncodingNegotiator ();
$ encoding = $ negotiator -> getBest ( $ acceptHeader , $ priorities );
EncodingNegotiator
renvoie une instance 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
Le CharsetNegotiator
renvoie une instance de AcceptCharset
.
Accept*
les cours Les classes Accept
et Accept*
partagent des méthodes communes telles que :
getValue()
renvoie la valeur acceptée (par exemple text/html; z=y; a=b; c=d
)getNormalizedValue()
renvoie la valeur avec les paramètres triés (par exemple text/html; a=b; c=d; z=y
)getQuality()
renvoie la qualité si disponible (paramètre q
)getType()
renvoie le type accepté (par exemple text/html
)getParameters()
renvoie l'ensemble des paramètres (à l'exclusion du paramètre q
s'il est fourni)getParameter()
permet de récupérer un paramètre donné par son nom. Sinon, revenez à une valeur $default
(nullable).hasParameter()
indique si un paramètre existe. La négociation suit le versioning sémantique.
Depuis octobre 2016, la branche 1.x
n'est plus prise en charge, ce qui signifie que la version majeure 1
a atteint la fin de sa vie. La dernière version est : 1.5.0.
Depuis novembre 2020, la branche 2.x
n'est plus prise en charge, ce qui signifie que la version majeure 2
a atteint la fin de sa vie. La dernière version est : 2.3.1.
dev-master
) Négociation 3.0 est sortie le 26 novembre 2020. Il s'agit de la version stable actuelle et elle est synchronisée avec la branche principale (alias master
).
Configurez la suite de tests à l'aide de Composer :
$ composer install --dev
Exécutez-le en utilisant PHPUnit :
$ phpunit
Voir dossier CONTRIBUANT.
Certaines parties de cette bibliothèque s'inspirent de :
Guillaume Durand
@neural-wetware
La négociation est publiée sous la licence MIT. Consultez le fichier LICENSE fourni pour plus de détails.