التفاوض عبارة عن مكتبة مستقلة لا تحتوي على أي تبعيات تسمح لك بتنفيذ تفاوض المحتوى في تطبيقك، مهما كان إطار العمل الذي تستخدمه. تعتمد هذه المكتبة على RFC 7231. التفاوض سهل الاستخدام، وتم اختباره على نطاق واسع!
هام: أنت تتصفح وثائق التفاوض 3.x +.
وثائق الإصدار 1.x متاحة هنا: وثائق التفاوض 1.x.
تتوفر وثائق الإصدار 2.x هنا: وثائق التفاوض 2.x.
الطريقة الموصى بها لتثبيت التفاوض هي من خلال 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()
إلى ما إذا كانت المعلمة موجودة أم لا. التفاوض يتبع الإصدار الدلالي.
اعتبارًا من أكتوبر 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
انظر ملف المساهمة.
بعض أجزاء هذه المكتبة مستوحاة من:
وليام دوراند
@ العصبية الرطبة
يتم تحرير التفاوض بموجب ترخيص MIT. راجع ملف الترخيص المرفق للحصول على التفاصيل.