thruster / http-middleware
Thruster HttpMiddleware 组件(基于PSR-7的中间件分发器)
1.1.4
2016-07-22 11:53 UTC
Requires
- php: >=7.0
- psr/http-message: ~1.0
Requires (Dev)
- phpunit/phpunit: ~5.0
README
[] (https://github.com/ThrusterIO/http-middleware/releases) [
] (LICENSE) [
] (https://travis-ci.org/ThrusterIO/http-middleware) [
] (https://scrutinizer-ci.com/g/ThrusterIO/http-middleware) [
] (https://scrutinizer-ci.com/g/ThrusterIO/http-middleware) [
] (https://packagist.org.cn/packages/thruster/http-middleware)
Thruster HttpMiddleware 组件。基于PSR-7的中间件分发器
安装
通过Composer
$ composer require thruster/http-middleware
用法
中间件
一个简单的中间件概念,运行所有已注册的中间件。
<?php use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ResponseInterface; use Thruster\Component\HttpMiddleware\Middlewares; $middlewares = new Middlewares(); $middlewares->add( function (ServerRequestInterface $request, ResponseInterface $response, callable $next) { // ... Do something cool return $next($request, $response); } ); $middlewares->add(new SomeCoolMiddleware()); $middlewares->add([$object, 'execute']); $response = $middlewares($request, new Response()); $notUsefulMiddleware = [$object, 'execute']; if ($middlewares->has($notUsefulMiddleware)) { $middlewares->remove($notUsefulMiddleware); } $response = $middlewares($request, new Response());
使用MiddlewaresAwareTrait 特性
HttpMiddleware提供了一种简单的特性,可以在类中包含中间件。
<?php use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ResponseInterface; use Thruster\Component\HttpMiddleware\MiddlewaresAwareTrait; $application = new class { use MiddlewaresAwareTrait; public function __construct() { $this->addMiddleware( function (ServerRequestInterface $request, ResponseInterface $response, callable $next) { // ... Do something cool return $next($request, $response); } ); $this->addMiddleware(new SomeCoolMiddleware()); $this->addMiddleware([$this, 'executeAction']); } public function executeAction(ServerRequestInterface $request, ResponseInterface $response, callable $next) { // ... } public function handleRequest(ServerRequestInterface $request) { $response = new Response(); $response = $this->executeMiddlewares($request, $response); } }; $application->handleRequest(ServerRequest::fromGlobals());
RequestMiddlewares
当您希望在调用控制器操作之前和之后调用不同的中间件时。
<?php use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ResponseInterface; use Thruster\Component\HttpMiddleware\RequestMiddlewares; $middlewares = new RequestMiddlewares(); $middlewares->pre( function (ServerRequestInterface $request, ResponseInterface $response, callable $next) { // ... Do something cool return $next($request, $response); } ); $middlewares->post(new SomeCoolMiddleware()); $response = $middlewares($request, new Response(), [$object, 'executeControllerAction']);
RequestMiddlewaresAwareTrait
类似于MiddlewaresAwareTrait,您可以将RequestMiddlewares注册为一个特性。
<?php use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ResponseInterface; use Thruster\Component\HttpMiddleware\RequestMiddlewaresAwareTrait; $application = new class { use RequestMiddlewaresAwareTrait; public function __construct() { $this->addPreMiddleware( function (ServerRequestInterface $request, ResponseInterface $response, callable $next) { // ... Do something cool return $next($request, $response); } ); $this->addPostMiddleware(new SomeCoolMiddleware()); } public function executeAction(ServerRequestInterface $request, ResponseInterface $response, callable $next) { // ... } public function handleRequest(ServerRequestInterface $request) { $response = new Response(); $response = $this->executeMiddlewares($request, $response, [$this, 'executeAction']); } }; $application->handleRequest(ServerRequest::fromGlobals());
测试
$ composer test
贡献
许可协议
有关更多信息,请参阅许可文件。