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
) Negotiation 3.0 已于 2020 年 11 月 26 日发布。这是当前的稳定版本,它与主分支(又名master
)同步。
使用 Composer 设置测试套件:
$ composer install --dev
使用 PHPUnit 运行它:
$ phpunit
请参阅贡献文件。
该库的某些部分的灵感来自:
威廉·杜兰德
@神经湿件
Negotiation 是根据 MIT 许可证发布的。有关详细信息,请参阅捆绑的许可证文件。