chubbyphp / chubbyphp-negotiation
Chubbyphp Negotiation
Package info
github.com/chubbyphp/chubbyphp-negotiation
pkg:composer/chubbyphp/chubbyphp-negotiation
2.3.1
2026-01-16 19:14 UTC
Requires
- php: ^8.3
- psr/http-message: ^1.1|^2.0
Requires (Dev)
- chubbyphp/chubbyphp-container: ^2.4.1
- chubbyphp/chubbyphp-dev-helper: dev-master
- chubbyphp/chubbyphp-http-exception: ^1.3.2
- chubbyphp/chubbyphp-laminas-config-factory: ^1.5.1
- chubbyphp/chubbyphp-mock: ^2.1.2
- infection/infection: ^0.32.3
- php-coveralls/php-coveralls: ^2.9.1
- phpstan/extension-installer: ^1.4.3
- phpstan/phpstan: ^2.1.33
- phpunit/phpunit: ^12.5.6
- pimple/pimple: ^3.6.1
- psr/http-server-middleware: ^1.0.2
Conflicts
- chubbyphp/chubbyphp-container: <2.4.1 || >=3.0
- chubbyphp/chubbyphp-http-exception: <1.3.2 || >=2.0
- chubbyphp/chubbyphp-laminas-config-factory: <1.5.1 || >=2.0
- pimple/pimple: <3.6.1 || >=4.0
- psr/http-server-middleware: <1.0.2|| >=2.0
README
Description
A simple negotiation library.
Requirements
- php: ^8.3
- psr/http-message: ^1.1|^2.0
Suggest
- chubbyphp/chubbyphp-container: ^2.3
- chubbyphp/chubbyphp-http-exception: ^1.2
- chubbyphp/chubbyphp-laminas-config-factory: ^1.4
- pimple/pimple: ^3.6
- psr/http-server-middleware: ^1.0.2
Installation
Through Composer as chubbyphp/chubbyphp-negotiation.
composer require chubbyphp/chubbyphp-negotiation "^2.3"
Usage
AcceptLanguageNegotiator
<?php
use Chubbyphp\Negotiation\AcceptLanguageNegotiator;
$request = ...;
$request->withHeader('Accept-Language', 'de,en-US;q=0.7,en;q=0.3');
$negotiator = new AcceptLanguageNegotiator(['en', 'de']);
$value = $negotiator->negotiate($request); // NegotiatedValue
$value->getValue(); // de
$value->getAttributes(); // ['q' => '1.0']
AcceptLanguageMiddleware
<?php
use Chubbyphp\Negotiation\Middleware\AcceptLanguageMiddleware;
$request = ...;
$request->withHeader('Accept-Language', 'de,en-US;q=0.7,en;q=0.3');
$middleware = new AcceptLanguageMiddleware($acceptLanguageNegotiator);
$response = $negotiator->process($request, $handler);
AcceptNegotiator
<?php
use Chubbyphp\Negotiation\AcceptNegotiator;
$request = ...;
$request->withHeader('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q =0.8');
$negotiator = new AcceptNegotiator(['application/json', 'application/xml', 'application/x-yaml']);
$value = $negotiator->negotiate($request); // NegotiatedValue
$value->getValue(); // application/xml
$value->getAttributes(); // ['q' => '0.9']
AcceptMiddleware
<?php
use Chubbyphp\Negotiation\Middleware\AcceptMiddleware;
$request = ...;
$request->withHeader('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q =0.8');
$middleware = new AcceptMiddleware($acceptNegotiator);
$response = $negotiator->process($request, $handler);
ContentTypeNegotiator
<?php
use Chubbyphp\Negotiation\ContentTypeNegotiator;
$request = ...;
$request->withHeader('Content-Type', 'application/xml; charset=UTF-8');
$negotiator = new ContentTypeNegotiator(['application/json', 'application/xml', 'application/x-yaml']);
$value = $negotiator->negotiate($request); // NegotiatedValue
$value->getValue(); // application/xml
$value->getAttributes(); // ['charset' => 'UTF-8']
ContentTypeMiddleware
<?php
use Chubbyphp\Negotiation\Middleware\ContentTypeMiddleware;
$request = ...;
$request->withHeader('Content-Type', 'application/xml; charset=UTF-8');
$middleware = new ContentTypeMiddleware($contentTypeNegotiator);
$response = $negotiator->process($request, $handler);
NegotiationServiceFactory
<?php
use Chubbyphp\Container\Container;
use Chubbyphp\Negotiation\ServiceFactory\NegotiationServiceFactory;
use Psr\Http\Message\ServerRequestInterface;
$container = new Container();
$container->factories((new NegotiationServiceFactory())());
$request = ...;
$container->get('negotiator.acceptNegotiator')
->negotiate($request);
$container->get('negotiator.acceptMiddleware')
->process($request, $handler);
$container->get('negotiator.acceptLanguageNegotiator')
->negotiate($request);
$container->get('negotiator.acceptLanguageMiddleware')
->process($request, $handler);
$container->get('negotiator.contentTypeNegotiator')
->negotiate($request);
$container->get('negotiator.contentTypeMiddleware')
->process($request, $handler);
NegotiationServiceProvider
<?php
use Chubbyphp\Negotiation\ServiceProvider\NegotiationServiceProvider;
use Pimple\Container;
use Psr\Http\Message\ServerRequestInterface;
$container = new Container();
$container->register(new NegotiationServiceProvider);
$request = ...;
$container['negotiator.acceptNegotiator']
->negotiate($request);
$container['negotiator.acceptMiddleware']
->process($request, $handler);
$container['negotiator.acceptLanguageNegotiator']
->negotiate($request);
$container['negotiator.acceptLanguageMiddleware']
->process($request, $handler);
$container['negotiator.contentTypeNegotiator']
->negotiate($request);
$container['negotiator.contentTypeMiddleware']
->process($request, $handler);
ServiceFactory
- AcceptLanguageMiddlewareFactory
- AcceptLanguageNegotiatorFactory
- AcceptMiddlewareFactory
- AcceptNegotiatorFactory
- ContentTypeMiddlewareFactory
- ContentTypeNegotiatorFactory
Copyright
2026 Dominik Zogg