Negosiasi adalah pustaka mandiri tanpa ketergantungan apa pun yang memungkinkan Anda mengimplementasikan negosiasi konten dalam aplikasi Anda, apa pun kerangka kerja yang Anda gunakan. Pustaka ini didasarkan pada RFC 7231. Negosiasi mudah digunakan, dan diuji secara ekstensif!
Penting: Anda sedang menelusuri dokumentasi Negosiasi 3.x +.
Dokumentasi untuk versi 1.x tersedia di sini: Dokumentasi negosiasi 1.x.
Dokumentasi untuk versi 2.x tersedia di sini: Dokumentasi negosiasi 2.x.
Cara yang disarankan untuk menginstal Negosiasi adalah melalui Komposer:
$ 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
mengembalikan instance Accept
, atau null
jika negosiasi jenis media terbaik gagal.
<?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
mengembalikan sebuah instance dari AcceptLanguage
.
<?php
$ negotiator = new Negotiation EncodingNegotiator ();
$ encoding = $ negotiator -> getBest ( $ acceptHeader , $ priorities );
EncodingNegotiator
mengembalikan sebuah instance dari 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
mengembalikan sebuah instance dari AcceptCharset
.
Accept*
Kelas Kelas Accept
dan Accept*
berbagi metode umum seperti:
getValue()
mengembalikan nilai penerimaan (misalnya text/html; z=y; a=b; c=d
)getNormalizedValue()
mengembalikan nilai dengan parameter yang diurutkan (misalnya text/html; a=b; c=d; z=y
)getQuality()
mengembalikan kualitas jika tersedia ( parameter q
)getType()
mengembalikan tipe penerimaan (misalnya text/html
)getParameters()
mengembalikan kumpulan parameter (tidak termasuk parameter q
jika disediakan)getParameter()
memungkinkan untuk mengambil parameter tertentu berdasarkan namanya. Jika tidak, kembalikan ke nilai $default
(nullable).hasParameter()
menunjukkan apakah suatu parameter ada. Negosiasi mengikuti Versi Semantik.
Mulai Oktober 2016, cabang 1.x
tidak didukung lagi, yang berarti versi utama 1
telah habis masa pakainya. Versi terakhir adalah: 1.5.0.
Mulai November 2020, cabang 2.x
tidak didukung lagi, yang berarti versi utama 2
telah habis masa pakainya. Versi terakhir adalah: 2.3.1.
dev-master
) Negosiasi 3.0 telah dirilis pada 26 November 2020. Ini adalah versi stabil saat ini dan sinkron dengan cabang utama (alias master
).
Siapkan rangkaian pengujian menggunakan Komposer:
$ composer install --dev
Jalankan menggunakan PHPUnit:
$ phpunit
Lihat BERKONTRIBUSI file.
Beberapa bagian perpustakaan ini terinspirasi oleh:
William Durand
@ peralatan basah saraf
Negosiasi dirilis di bawah Lisensi MIT. Lihat file LISENSI yang dibundel untuk detailnya.