Negotiation เป็นไลบรารีแบบสแตนด์อโลนที่ไม่มีการขึ้นต่อกันใดๆ ซึ่งช่วยให้คุณสามารถใช้การเจรจาต่อรองเนื้อหาในแอปพลิเคชันของคุณได้ ไม่ว่าคุณจะใช้เฟรมเวิร์กใดก็ตาม ไลบรารีนี้อิงตาม 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
(nullable) มิฉะนั้นhasParameter()
ระบุว่ามีพารามิเตอร์อยู่หรือไม่ การเจรจาเป็นไปตามการกำหนดเวอร์ชันเชิงความหมาย
ณ เดือนตุลาคม 2559 ระบบไม่รองรับสาขา 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
ดูไฟล์ที่มีส่วนร่วม
บางส่วนของห้องสมุดนี้ได้รับแรงบันดาลใจจาก:
วิลเลียม ดูแรนด์
@ประสาท-wetware
การเจรจาต่อรองได้รับการปล่อยตัวภายใต้ใบอนุญาต MIT ดูรายละเอียดในไฟล์ LICENSE ที่ให้มา