Negotiationは、依存関係のないスタンドアロン ライブラリであり、使用するフレームワークに関係なく、アプリケーションにコンテンツ ネゴシエーションを実装できます。このライブラリは RFC 7231 に基づいています。ネゴシエーションは使いやすく、広範囲にわたる単体テストが行われています。
重要:あなたは Negotiation 3.x以降のドキュメントを参照しています。
バージョン1.xのドキュメントは、Negotiation 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
(null 許容) 値にフォールバックします。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
CONTRIBUTING ファイルを参照してください。
このライブラリの一部は以下からインスピレーションを受けています。
ウィリアム・デュランド
@neural-ウェットウェア
ネゴシエーションは MIT ライセンスに基づいてリリースされます。詳細については、同梱の LICENSE ファイルを参照してください。