협상은 사용하는 프레임워크에 관계없이 애플리케이션에서 콘텐츠 협상을 구현할 수 있게 해주는 종속성이 없는 독립 실행형 라이브러리입니다. 이 라이브러리는 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 파일을 참조하세요.
이 라이브러리의 일부는 다음에서 영감을 얻었습니다.
윌리엄 듀런드
@신경웨트웨어
협상은 MIT 라이선스에 따라 공개됩니다. 자세한 내용은 번들로 제공되는 LICENSE 파일을 참조하세요.