Skip to content

Latest commit

 

History

History
67 lines (45 loc) · 1.13 KB

File metadata and controls

67 lines (45 loc) · 1.13 KB

Protein | Negotiation

A module for handling Content Negotiation.

See Reference : RFC 7231

Install


composer require proteins/negotiation

Require the class via :

use Proteins\Negotiation;

Get best match between need and offerings


Note: You can use * as wildcards for matching a family of choices.

$need  = 'image/*;q=0.9,*/*;q=0.2';
$offer = 'text/html,svg/xml,image/svg+xml';
echo Negotiation::bestMatch($need,$offer);
image/svg+xml

Preferred and best match


Negotiation class automatically orders by priority based on q parameter.

$negotiatior = new Negotiation('en-US;q=0.3,it,en;q=0.4,es;q=0.9,de');

You can obtain the preferred response via the preferred method.

echo $negotiatior->preferred();
it

Or get the best match against another RFC7231 query

echo $negotiatior->best('es,en-US');
es

false will be returned if no match can be found.