Negotiation ist eine eigenständige Bibliothek ohne Abhängigkeiten, die es Ihnen ermöglicht, Inhaltsverhandlungen in Ihrer Anwendung zu implementieren, unabhängig davon, welches Framework Sie verwenden. Diese Bibliothek basiert auf RFC 7231. Negotiation ist einfach zu verwenden und ausgiebig getestet!
Wichtig: Sie durchsuchen die Dokumentation von Negotiation 3.x +.
Die Dokumentation für Version 1.x ist hier verfügbar: Negotiation 1.x-Dokumentation.
Die Dokumentation für Version 2.x ist hier verfügbar: Negotiation 2.x-Dokumentation.
Die empfohlene Methode zur Installation von Negotiation ist 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' Der Negotiator gibt eine Instanz von Accept oder null zurück, wenn die Aushandlung des besten Medientyps fehlgeschlagen ist.
<?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 Der LanguageNegotiator gibt eine Instanz von AcceptLanguage zurück.
<?php
$ negotiator = new Negotiation EncodingNegotiator ();
$ encoding = $ negotiator -> getBest ( $ acceptHeader , $ priorities ); Der EncodingNegotiator gibt eine Instanz von AcceptEncoding zurück.
<?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 Der CharsetNegotiator gibt eine Instanz von AcceptCharset zurück.
Accept* Kurse Die Klassen Accept und Accept* nutzen gemeinsame Methoden wie:
getValue() gibt den akzeptierten Wert zurück (z. B. text/html; z=y; a=b; c=d )getNormalizedValue() gibt den Wert mit sortierten Parametern zurück (z. B. text/html; a=b; c=d; z=y ).getQuality() gibt die Qualität zurück, falls verfügbar ( q -Parameter)getType() gibt den akzeptierten Typ zurück (z. B. text/html )getParameters() gibt den Parametersatz zurück (mit Ausnahme des q Parameters, falls angegeben)getParameter() ermöglicht das Abrufen eines bestimmten Parameters anhand seines Namens. Andernfalls wird auf einen $default Wert (nullable) zurückgegriffen.hasParameter() gibt an, ob ein Parameter vorhanden ist. Die Aushandlung folgt der semantischen Versionierung.
Seit Oktober 2016 wird Zweig 1.x nicht mehr unterstützt, was bedeutet, dass die Hauptversion 1 das Ende ihrer Lebensdauer erreicht hat. Letzte Version ist: 1.5.0.
Ab November 2020 wird Branch 2.x nicht mehr unterstützt, was bedeutet, dass die Hauptversion 2 das Ende ihrer Lebensdauer erreicht hat. Letzte Version ist: 2.3.1.
dev-master ) Negotiation 3.0 wurde am 26. November 2020 veröffentlicht. Dies ist die aktuelle stabile Version und sie ist mit dem Hauptzweig (auch bekannt als master ) synchronisiert.
Richten Sie die Testsuite mit Composer ein:
$ composer install --dev
Führen Sie es mit PHPUnit aus:
$ phpunit
Siehe CONTRIBUTING-Datei.
Einige Teile dieser Bibliothek sind inspiriert von:
William Durand
@neural-wetware
Negotiation wird unter der MIT-Lizenz veröffentlicht. Einzelheiten finden Sie in der mitgelieferten LICENSE-Datei.