Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

chubbyphp/chubbyphp-negotiation

Repository files navigation

chubbyphp-negotiation

CI Coverage Status Mutation testing badge Latest Stable Version Total Downloads Monthly Downloads

bugs code_smells coverage duplicated_lines_density ncloc sqale_rating alert_status reliability_rating security_rating sqale_index vulnerabilities

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

Copyright

2026 Dominik Zogg

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /