Negotiation
3.1.0 (2022-01-30)
Negotiation是一個獨立的庫,沒有任何依賴項,允許您在應用程式中實現內容協商,無論您使用什麼框架。該庫基於 RFC 7231。
重要提示:您正在瀏覽 Negotiation 3.x + 的文件。
版本1.x的文件可在此處取得:協商 1.x 文件。
2.x版本的文件可在此處取得:Negotiation 2.x 文件。
建議的安裝 Negotiation 的方式是透過 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'
Negotiator
傳回Accept
的實例,如果協商最佳媒體類型失敗,則傳回null
。
<?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
傳回AcceptLanguage
的實例。
<?php
$ negotiator = new Negotiation EncodingNegotiator ();
$ encoding = $ negotiator -> getBest ( $ acceptHeader , $ priorities );
EncodingNegotiator
傳回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
傳回AcceptCharset
的實例。
Accept*
課程Accept
和Accept*
類別共用通用方法,例如:
getValue()
傳回接受值(例如text/html; z=y; a=b; c=d
)getNormalizedValue()
傳回參數已排序的值(例如text/html; a=b; c=d; z=y
)getQuality()
傳回品質(如果可用)( q
參數)getType()
傳回接受類型(例如text/html
)getParameters()
傳回參數集(如果提供,則不包含q
參數)getParameter()
允許透過名稱檢索給定參數。否則回退到$default
(可為空)值。hasParameter()
指示參數是否存在。 協商遵循語義版本控制。
截至 2016 年 10 月,不再支援分支1.x
,這意味著主要版本1
已結束生命。最新版本是:1.5.0。
截至 2020 年 11 月,不再支援分支2.x
,這意味著主要版本2
已終止。最新版本是:2.3.1。
dev-master
) master
3.0 已於 2020 年 11月26 日發布。
使用 Composer 設定測試套件:
$ composer install --dev
使用 PHPUnit 運行它:
$ phpunit
請參閱貢獻文件。
該庫的某些部分的靈感來自:
威廉杜蘭德
@神經濕件
Negotiation 是根據 MIT 許可證發布的。有關詳細信息,請參閱捆綁的許可證文件。