Согласование — это отдельная библиотека без каких-либо зависимостей, которая позволяет вам реализовать согласование контента в вашем приложении, какую бы платформу вы ни использовали. Эта библиотека основана на RFC 7231. Переговоры просты в использовании и прошли тщательное модульное тестирование!
Важно: Вы просматриваете документацию Negotiation 3.x +.
Документация для версии 1.x доступна здесь: Документация по переговорам 1.x.
Документацию для версии 2.x можно найти здесь: Документация по переговорам 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 года ветка 1.x
больше не поддерживается, а это означает, что срок службы основной версии 1
истек. Последняя версия: 1.5.0.
По состоянию на ноябрь 2020 года ветка 2.x
больше не поддерживается, а это означает, что срок службы основной версии 2
истек. Последняя версия: 2.3.1.
dev-master
) Negotiation 3.0 был выпущен 26 ноября 2020 г. Это текущая стабильная версия , синхронизированная с основной веткой (также известной как master
).
Настройте набор тестов с помощью Composer:
$ composer install --dev
Запустите его с помощью PHPUnit:
$ phpunit
См. файл ВКЛАД.
Некоторые части этой библиотеки вдохновлены:
Уильям Дюран
@neural-wetware
Переговоры выпускаются под лицензией MIT. Подробности смотрите в прилагаемом файле ЛИЦЕНЗИИ.