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 ファイルを参照してください。