Collection of PSR-15 middlewares
- PHP >= 7.0
- A PSR-7 http message implementation (Diactoros, Guzzle, Slim, etc...)
- A PSR-15 middleware dispatcher
use Zend\Diactoros\ServerRequestFactory;
use Middlewares\Utils\Dispatcher;
use Middlewares;
$dispatcher = new Dispatcher([
//Handle errors
(new Middlewares\ErrorHandler())
->catchExceptions(true),
//Log the request
new Middlewares\AccessLog($app->get('logger')),
//Calculate the response time
new Middlewares\ResponseTime(),
//Removes the trailing slash
new Middlewares\TrailingSlash(false),
//Insert the UUID
new Middlewares\Uuid(),
//Disable the search engine robots
new Middlewares\Robots(false),
//Compress the response to gzip
new Middlewares\GzipEncoder(),
//Minify the html
new Middlewares\HtmlMinifier(),
//Override the method using X-Http-Method-Override header
new Middlewares\MethodOverride(),
//Parse the json payload
new Middlewares\JsonPayload(),
//Parse the urlencoded payload
new Middlewares\UrlEncodePayload(),
//Save the client ip in the '_ip' attribute
(new Middlewares\ClientIp())
->attribute('_ip'),
//Allow only some ips
(new Middlewares\Firewall(['127.0.0.*']))
->ipAttribute('_ip'),
//Add cache expiration headers
new Middlewares\Expires(),
//Add the php debugbar
new Middlewares\Debugbar(),
//Negotiate the content-type
new Middlewares\ContentType(),
//Negotiate the language
new Middlewares\ContentLanguage(['gl', 'es', 'en']),
//Handle the routes with fast-route
new Middlewares\FastRoute($app->get('dispatcher')),
//Create and save a session in '_session' attribute
(new Middlewares\AuraSession())
->attribute('_session'),
//Handle the route
new Middlewares\RequestHandler(),
]);
$response = $dispatcher->dispatch(ServerRequestFactory::fromGlobals());
Use the package repository of each component to notify any issue or pull request related with it, and use this repository for generical questions, new middlewares discussions, etc.
If you want to contribute with new middlewares, you can take a look to these ideas. There's also a skeleton that you can use for quick start.
See CONTRIBUTING for contributing details.
Download the logo from the art directory.
The MIT License (MIT). Please see LICENSE for more information.