odan middleware
该软件包已被废弃,不再维护。未建议替代软件包。
Symfony HTTP Foundation 中间件
dev-master
2017-06-08 21:26 UTC
Requires
- php: ^5.6 || ^7.0
- monolog/monolog: ^1.18.0
- symfony/http-foundation: ^3.2
- symfony/routing: ^3.2
Requires (Dev)
- phpunit/phpunit: 5.7
This package is not auto-updated.
Last update: 2017-11-19 12:23:14 UTC
README
Symfony HTTP Foundation 中间件。
功能
Symfony 中间件
- ExceptionMiddleware - 异常处理和日志记录(PSR-3)
- JsonMiddleware - Json 请求和响应处理
- RouterMiddleware - 路由和分发
- SessionMiddleware - 会话处理
安装
composer install odan/middleware
Symfony HttpFoundation 中间件
典型的 symfony 中间件结构与 PSR-7 中间件几乎相同。唯一的不同是 symfony 请求和响应对象(请参阅命名空间)。
symfony 中间件必须具有以下签名
function ( Request $request, // the request Response $response, // the response callable $next // the next callback ) { // ... }
中间件(示例)
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; class MyMiddleware { /** * Middleware. * * @param Request $request The request. * @param Response $response The response. * @param callable $next Callback to invoke the next middleware. * @return Response A response */ public function __invoke(Request $request, Response $response, callable $next) { // do some fance stuff $response->setContent('Hello Middleware World!'); // Call next calback and return response object return $next($request, $response); } }
接下来,我们需要一个中间件分发器,它将运行我们的回调函数。
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; /** * Middleware dispatcher. * * @param Request $request Request objct * @param Response $response Response object * @param array $queue Array with middleware * @return Response response */ function relay(Request $request, Response $response, array $queue) { $runner = function (Request $request, Response $response) use(&$queue, &$runner) { $middleware = array_shift($queue); if ($middleware) { return $middleware($request, $response, $runner); } return $response; }; return $runner($request, $response); }
在队列中,我们定义一个中间件可调用列表。
// Create a queue array of middleware callables $queue = []; $queue[] = new MyMiddleware(); // add more...
最后,我们通过中间件运行器运行队列,并发送响应。
$request = Request::createFromGlobals(); $response = new Response('', 200); $sprinter = new \Odan\Middleware\Dispatcher\HttpFoundationSprinter(); $response = $sprinter->run($request, $response, $queue); $response->send();
配置
待办事项
使用方法
待办事项