PHPackages                             ellipse/stack - 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. ellipse/stack

AbandonedLibrary

ellipse/stack
=============

Psr-15 middleware dispatcher implementation

1.6.1(8y ago)8112MITPHPPHP &gt;=7.0

Since Oct 18Pushed 8y ago1 watchersCompare

[ Source](https://github.com/ellipsephp/dispatcher)[ Packagist](https://packagist.org/packages/ellipse/stack)[ Docs](https://github.com/ellipsephp/dispatcher)[ RSS](/packages/ellipse-stack/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (1)Dependencies (7)Versions (18)Used By (0)

Dispatcher
==========

[](#dispatcher)

This package provides a [Psr-15](https://www.php-fig.org/psr/psr-15/) dispatcher implementation.

**Require** php &gt;= 7.0

**Installation** `composer require ellipse/dispatcher`

**Run tests** `./vendor/bin/kahlan`

- [Using a dispatcher](#using-a-dispatcher)
- [Middleware and request handler resolving](#middleware-and-request-handler-resolving)

Using a dispatcher
------------------

[](#using-a-dispatcher)

This package provides an `Ellipse\Dispatcher` class allowing to process a Psr-7 request through a Psr-15 middleware queue (First in first out order) before handling it with a Psr-15 request handler in order to create a Psr-7 response.

It is basically a request handler decorator wrapping a middleware queue around a request handler. Its constructor takes two parameters:

- a request handler object implementing `Psr\Http\Server\RequestHandlerInterface`
- an array containing middleware objects implementing `Psr\Http\Server\MiddlewareInterface`

The `Dispatcher` itself implements `RequestHandlerInterface` so a response is produced by using its `->handle()` method with a request. It also means it can be used as the request handler of another `Dispatcher`. Also, The same `Dispatcher` can be used multiple times to handle as many requests as needed.

Finally when a value of the given middleware queue is not an implementation of `MiddlewareInterface` an `Ellipse\Dispatcher\Exceptions\MiddlewareTypeException` is thrown. [Factory decorators](#middleware-and-request-handler-resolving) can be used to resolve some type of values as middleware.

```
