Download the PHP package healthengine/popeye without Composer
On this page you can find all versions of the php package healthengine/popeye. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download healthengine/popeye
More information about healthengine/popeye
Files in healthengine/popeye
Package popeye
Short Description Popeye is a generic middleware stack inspired by the Slim micro framework
License MIT
Informations about the package popeye
Popeye
Popeye is a generic middleware stack - because HTTP isn't the only thing that deserves middleware.
Usage
This is a tiny library and is very easy to use. It's similar to Slim's middleware implementation except it isn't specific to HTTP - it can be used in any context. The following is an example that adds some type safety.
The code above ensures that only middleware of a certain implementing type can be added, as well as only a certain value
accepted to be passed through them, thus ensuring as much type safety as PHP can afford. It also implements the magic
__invoke()
method so an instance of the middleware can be treated as a callable directly, which may or may not suit
your application.
However, this example is a little convoluted and is not very efficient, since every handler object must be instantiated
even if the stack doesn't end up calling it.
Consider tying this into a framework that provides dependency injection, such as Laravel. As such, you are able to
leverage its ability to autowire dependencies on either a callable, or construct and call an object for you.
This can be achieved similar to below. Of course, any other DI could be used - this library is not opinionated in that
facet.
Of course, with this method we lose the type safety so you have to be careful to add handlers with a footprint combatible with how the middleware will eventually be resolved, although Laravel will take a pretty good guess at trying to resolve unspecified things. Guess we can't have everything ...
License
Popeye is licensed under the MIT license.