odanmiddleware

该软件包已被废弃,不再维护。未建议替代软件包。

Symfony HTTP Foundation 中间件

安装: 363

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 0

公开问题: 0

类型:项目

dev-master 2017-06-08 21:26 UTC

This package is not auto-updated.

Last update: 2017-11-19 12:23:14 UTC


README

Symfony HTTP Foundation 中间件。

Latest Version Build Status Crutinizer Code Coverage Total Downloads Software License

功能

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();

配置

待办事项

使用方法

待办事项