PHPackages                             bitexpert/adroit - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. bitexpert/adroit

AbandonedArchivedLibrary[Framework](/categories/framework)

bitexpert/adroit
================

PSR-7 Middleware based on the ADR (Action Domain Responder) paradigm.

v0.7.0(9y ago)281.1k↓77.8%5[3 issues](https://github.com/bitExpert/adroit/issues)1Apache-2.0PHPPHP ^7.0

Since Nov 15Pushed 8y ago2 watchersCompare

[ Source](https://github.com/bitExpert/adroit)[ Packagist](https://packagist.org/packages/bitexpert/adroit)[ RSS](/packages/bitexpert-adroit/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (4)Dependencies (12)Versions (20)Used By (1)

bitexpert/adroit
================

[](#bitexpertadroit)

This package provides a [PSR-7](http://www.php-fig.org/psr/psr-7/) compatible [ADR](http://pmjones.io/adr/) middleware.

[![Build Status](https://camo.githubusercontent.com/c89022f6c27d1c32b8111955f6e041198e4252340c8aedf719d428cec9cbf4c9/68747470733a2f2f7472617669732d63692e6f72672f6269744578706572742f6164726f69742e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/bitExpert/adroit)[![Coverage Status](https://camo.githubusercontent.com/b5910032a42748f0295b193e1c6c547b9e91ecfd4e1afaa127453c71ab1a4615/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f6269744578706572742f6164726f69742f62616467652e7376673f6272616e63683d6d6173746572)](https://coveralls.io/github/bitExpert/adroit?branch=master)

Installation
------------

[](#installation)

The preferred way of installing `bitexpert/adroit` is through Composer. Simply add `bitexpert/adroit` as a dependency:

```
composer.phar require bitexpert/adroit

```

Usage
-----

[](#usage)

The configure the \\bitExpert\\Adroit\\AdroitMiddleware middleware you need provide an array of \\bitExpert\\Adroit\\Action\\Resolver\\ActionResolver, an array of \\bitExpert\\Adroit\\Responder\\Resolver\\ResponderResolver and a action request attribute telling adroit where to look for the action identifier.

ActionResolver
--------------

[](#actionresolver)

As the name implies ActionResolvers are responsible for resolving an action class instance from the so-called actionToken. The actionToken is basically used to identify a route. Adroit comes with a default implementation of an [ActionResolver](src/bitExpert/Adroit/Action/Resolver/ContainerActionResolver.php) which uses any [container-interop](https://github.com/container-interop/container-interop) compatible DI container as a backend.

Of course you may implement your own ActionResolvers using the (\\bitExpert\\Adroit\\Action\\ActionResolver) interface.

```
/** @var \Interop\Container\ContainerInterface $container */
$actionResolver = new \bitExpert\Adroit\Action\Resolver\ContainerActionResolver($container);
```

ResponderResolver
-----------------

[](#responderresolver)

Similar to the ActionResolvers the ResponderResolvers are responsible for resolving an responder class instance from the $type defined in the DomainPayload instance. Adroit comes with a default implementation of an ResponderResolver (\\bitExpert\\Adroit\\Responder\\Resolver\\ContainerAwareResponderResolver) which uses any [container-interop](https://github.com/container-interop/container-interop) compatible DI container as a backend.

Of course you may implement your own ResponderResolvers using the [ResponderResolver](src/bitExpert/Adroit/Responder/ResponderResolver.php) interface.

```
/** @var \Interop\Container\ContainerInterface $container */
$responderResolver = new \bitExpert\Adroit\Responder\Resolver\ContainerAwareResponderResolver($container);
```

(Domain)Payload
---------------

[](#domainpayload)

You may define your own payload class(es) by implementing the \\bitExpert\\Adroit\\Domain\\Payload interface. This gives you the opportunity to freely define the payload according to your needs. This example implementation will be used in the documentation as follows:

```
