psr15-middlewares
Collection of PSR-15 middlewares
Requirements
- PHP >= 7.0
- A PSR-7 http message implementation (Diactoros, Guzzle, Slim, etc...)
- A PSR-15 middleware dispatcher
Usage example
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());
List of all available middlewares
Authentication
Client info
Develop utils
Optimization
Routers
Security
Session
Urls
Others
Contributing
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.
Logo
Download the logo from the art directory.
The MIT License (MIT). Please see LICENSE for more information.